2024-07-06 10:01:30 +08:00
using Dm.filter.log ;
//using DM_Dal.Models;
using DM_Weight.Models ;
using DM_Weight.msg ;
using DM_Weight.Port ;
using DM_Weight.util ;
using DM_Weight.ViewModels ;
using log4net ;
using log4net.Repository.Hierarchy ;
using Microsoft.Data.SqlClient ;
using Microsoft.Web.WebView2.Core ;
//using MySqlConnector;
using MySql.Data.MySqlClient ;
using Mysqlx.Crud ;
using Mysqlx.Expr ;
//using MySqlConnector;
using Newtonsoft.Json ;
using SCHelper.Database ;
using SqlSugar.SplitTableExtensions ;
using System ;
using System.Collections.Generic ;
using System.Configuration ;
using System.Data ;
using System.Diagnostics ;
using System.Drawing.Printing ;
using System.Linq ;
using System.Reflection ;
using System.Reflection.PortableExecutable ;
using System.Security.Cryptography ;
using System.Text ;
using System.Threading ;
using System.Threading.Tasks ;
using System.Windows.Automation ;
using System.Windows.Documents ;
using System.Windows.Ink ;
namespace DM_Weight.Services
{
public class SqlHelperService
{
private readonly ILog logger = LogManager . GetLogger ( typeof ( SqlHelperService ) ) ;
//public static string connStr = ConfigurationManager.AppSettings["database"].ToString();
public static string connStr = ConfigurationManager . ConnectionStrings [ "database" ] . ToString ( ) ;
static string machine_id = ConfigurationManager . AppSettings [ "machineId" ] ? ? "DM1" ;
private static readonly DateTime Jan1st1970 = new DateTime
( 1970 , 1 , 1 , 0 , 0 , 0 , DateTimeKind . Utc ) ;
static string SupplierDept = ConfigurationManager . AppSettings [ "supplierDept" ] . ToString ( ) ;
static string ReceiveDept = ConfigurationManager . AppSettings [ "receiveDept" ] . ToString ( ) ;
//指纹登录
public UserList CheckUserByFingerPrinter ( int fingerPrinterId )
{
UserList ? user = null ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
logger . Info ( $"connStr: {connStr}" ) ;
try
{
if ( con . State ! = ConnectionState . Open )
{
con . Open ( ) ;
}
}
catch ( Exception ex )
{
logger . Info ( $"Open失败: {ex.ToString()};连接状态:{con.State}" ) ;
logger . Info ( "再次Open" ) ;
con . Open ( ) ;
}
logger . Info ( $"数据库连接状态{con.State}" ) ;
string sql = @ "select ul.id as id,ul.user_id,ul.User_name as userName,r.id as rid,r.role_name,r.permissions,r.machine_id from user_list ul
INNER JOIN role r on ul . machine_role_id = r . id where ul . Id = @ID and ul . machine_id = @machine_id and r . machine_id = @machine_id ";
MySqlCommand cmd = new MySqlCommand ( sql , con ) ;
cmd . Parameters . Clear ( ) ;
MySqlParameter [ ] mySqlParameter = new MySqlParameter [ ] { new MySqlParameter ( "ID" , fingerPrinterId ) , new MySqlParameter ( "machine_id" , ( ConfigurationManager . AppSettings [ "machineId" ] ? ? "DM1" ) ) } ;
cmd . Parameters . AddRange ( mySqlParameter ) ;
//执行语句
MySqlDataReader reader = cmd . ExecuteReader ( ) ;
logger . Info ( "MySqlDataReader读数据" ) ;
while ( reader . Read ( ) )
{
user = new UserList ( ) ;
user . Id = reader . GetInt32 ( "id" ) ;
user . UserName = reader [ "user_id" ] is DBNull ? "" : reader . GetString ( "user_id" ) ;
//user.UserName = reader["id"] is DBNull ? "" : reader.GetString("id");
user . Nickname = reader [ "userName" ] is DBNull ? "" : reader . GetString ( "userName" ) ;
user . MachineId = reader [ "machine_id" ] is DBNull ? "" : reader . GetString ( "machine_id" ) ;
RoleDm role = new RoleDm ( ) ;
role . Id = reader . GetInt32 ( "rid" ) ;
//role.Permissions = reader["permissions"] is DBNull ? "" : reader.GetString("permissions");
role . RoleName = reader [ "role_name" ] is DBNull ? "" : reader . GetString ( "role_name" ) ;
role . Permissions = JsonConvert . DeserializeObject < List < PremissionDm > > ( reader [ "permissions" ] is DBNull ? "" : reader . GetString ( "permissions" ) ) ; // JsonConvert.SerializeObject(reader.GetString("permissions")).ToList();
user . Role = role ;
}
reader . Close ( ) ;
//logger.Info($"sql: {sql}");
return user ;
}
}
//private Task connOpen(MySqlConnection con)
//{
// return Task.Run(() =>
// {
// if (con.State != System.Data.ConnectionState.Closed)
// {
// con.Close();
// }
// try
// {
// con.Open();
// }
// catch (Exception ex)
// {
// logger.Info($"Open失败: {ex.Message}");
// }
// });
//}
//用户名密码登录
public UserList CheckUserForLogin ( string userName )
{
UserList user = null ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
logger . Info ( $"connStr: {connStr}" ) ;
try
{
if ( con . State ! = ConnectionState . Open )
{
con . Open ( ) ;
}
}
catch ( Exception ex )
{
logger . Info ( $"Open失败: {ex.ToString()};连接状态:{con.State}" ) ;
logger . Info ( "再次Open" ) ;
con . Open ( ) ;
}
logger . Info ( $"数据库连接状态{con.State}" ) ;
string sql = @ "select ul.id as id,ul.User_name as userName,ul.pass_word,r.id as rId,r.role_name,r.permissions,r.machine_id from user_list ul
INNER JOIN role r on ul . machine_role_id = r . id where ul . user_ID = @UserName and ul . machine_id = @machine_id and r . machine_id = @machine_id ";
//MySqlDataAdapter da= new MySqlDataAdapter(sql,con);
MySqlCommand cmd = new MySqlCommand ( sql , con ) ;
cmd . Parameters . Clear ( ) ;
MySqlParameter [ ] mySqlParameter = new MySqlParameter [ ] { new MySqlParameter ( "UserName" , userName ) , new MySqlParameter ( "machine_id" , ( ConfigurationManager . AppSettings [ "machineId" ] ? ? "DM1" ) ) } ;
cmd . Parameters . AddRange ( mySqlParameter ) ;
//执行语句
MySqlDataReader reader = cmd . ExecuteReader ( ) ;
logger . Info ( "MySqlDataReader读数据" ) ;
while ( reader . Read ( ) )
{
user = new UserList ( ) ;
user . Id = reader . GetInt32 ( "id" ) ;
user . UserName = reader [ "userName" ] is DBNull ? "" : reader . GetString ( "userName" ) ;
//user.UserName = reader["id"] is DBNull ? "" : reader.GetString("id");
user . Nickname = reader [ "userName" ] is DBNull ? "" : reader . GetString ( "userName" ) ;
user . MachineId = reader [ "machine_id" ] is DBNull ? "" : reader . GetString ( "machine_id" ) ;
RoleDm role = new RoleDm ( ) ;
role . Id = reader . GetInt32 ( "rId" ) ;
//role.Permissions = reader["permissions"] is DBNull ? "" : reader.GetString("permissions");
role . RoleName = reader [ "role_name" ] is DBNull ? "" : reader . GetString ( "role_name" ) ;
role . Permissions = JsonConvert . DeserializeObject < List < PremissionDm > > ( reader [ "permissions" ] is DBNull ? "" : reader . GetString ( "permissions" ) ) ; // JsonConvert.SerializeObject(reader.GetString("permissions")).ToList();
user . Role = role ;
user . PassWord = reader [ "pass_word" ] is DBNull ? "" : reader . GetString ( "pass_word" ) ;
}
reader . Close ( ) ;
logger . Info ( $"sql: {sql}" ) ;
return user ;
}
}
//获取抽屉数量
public int FindDrawerCount ( )
{
int count = 0 ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
logger . Info ( $"connStr: {connStr}" ) ;
try
{
if ( con . State ! = ConnectionState . Open )
{
con . Open ( ) ;
}
}
catch ( Exception ex )
{
logger . Info ( $"Open失败: {ex.ToString()};连接状态:{con.State}" ) ;
logger . Info ( "再次Open" ) ;
con . Open ( ) ;
}
logger . Info ( $"数据库连接状态{con.State}" ) ;
string sql = @"SELECT COUNT(1) FROM (SELECT COUNT(row_no) FROM channel_list WHERE ( drawer_type <> 3 ) AND (machine_id = @machine_id) GROUP BY row_no ) CountTable" ;
MySqlCommand cmd = new MySqlCommand ( sql , con ) ;
cmd . Parameters . Clear ( ) ;
MySqlParameter mySqlParameter = new MySqlParameter ( "machine_id" , ( ConfigurationManager . AppSettings [ "machineId" ] ? ? "DM1" ) ) ;
cmd . Parameters . Add ( mySqlParameter ) ;
//执行语句
count = Convert . ToInt32 ( cmd . ExecuteScalar ( ) ) ;
}
return count ;
}
/// <summary>
/// 处方取药
/// </summary>
/// <param name="OrderDate"></param>
/// <param name="pageNum"></param>
/// <param name="pageSize"></param>
/// <returns></returns>
public List < OrderInfo > GetOrderInfos ( string Code , string SearchValue , string OrderDate , int pageNum , int pageSize , ref int totalCount )
{
List < OrderInfo > orderInfos = new List < OrderInfo > ( ) ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
logger . Info ( $"connStr: {connStr}" ) ;
try
{
if ( con . State ! = ConnectionState . Open )
{
con . Open ( ) ;
}
}
catch ( Exception ex )
{
logger . Info ( $"Open失败: {ex.ToString()};连接状态:{con.State}" ) ;
logger . Info ( "再次Open" ) ;
con . Open ( ) ;
}
logger . Info ( $"数据库连接状态{con.State}" ) ;
totalCount = 0 ;
pageNum = ( pageNum - 1 ) * pageSize ;
string countSql = @ " SELECT COUNT(1) FROM (SELECT oi.order_id FROM order_info oi Inner JOIN order_detail od ON ( oi.order_no = od.order_no )
Inner JOIN ( SELECT chnguid , machine_id , row_no , col_no , pos_no , drug_id , drawer_type , board_type , state FROM channel_list
WHERE ( drawer_type = 1 ) AND ( machine_id = @machineId ) GROUP BY drug_id ) t
ON ( od . drug_id = t . drug_id ) WHERE ( oi . dm_status = 0 )
AND ( oi . his_disp_flag = 0 ) AND ( oi . cancel_flag = 0 ) ";
if ( ! string . IsNullOrEmpty ( OrderDate ) )
{
countSql + = $" AND (DATE_FORMAT(oi.recv_date, '%Y-%m-%d') = '{OrderDate}' ) " ;
}
if ( ! string . IsNullOrEmpty ( Code ) & & ! string . IsNullOrEmpty ( SearchValue ) )
{
if ( Code . Equals ( "OrderNo" ) )
countSql + = $" AND ( oi.order_no = '{SearchValue}' ) " ;
else
countSql + = $" AND ( oi.patient_id = '{SearchValue}' ) " ;
}
countSql + = " GROUP BY oi.order_no ) CountTable " ;
MySqlCommand cmdCount = new MySqlCommand ( countSql , con ) ;
cmdCount . Parameters . Clear ( ) ;
MySqlParameter [ ] mySqlParameterCount = new MySqlParameter [ ]
{
new MySqlParameter ( "machineId" , ( ConfigurationManager . AppSettings [ "machineId" ] ? ? "DM1" ) ) ,
new MySqlParameter ( "OrderDate" , OrderDate )
} ;
cmdCount . Parameters . AddRange ( mySqlParameterCount ) ;
//执行语句
totalCount = Convert . ToInt32 ( cmdCount . ExecuteScalar ( ) ) ;
string sql = $ @ " SELECT oi.order_id,oi.pharmacy,oi.order_no,oi.patient_id,oi.p_name,oi.sex,oi.age,oi.id_number,
oi . patient_card , oi . invoice_no , oi . patient_no , oi . doctor_name , oi . order_date , oi . charge_date , oi . recv_date ,
oi . dept_name , oi . disease , oi . order_type , oi . charge_type , oi . state , oi . his_disp_flag , oi . cancel_flag , oi . dm_status , oi . costs FROM order_info oi Inner JOIN order_detail od ON ( oi . order_no = od . order_no ) Inner JOIN
( SELECT chnguid , machine_id , row_no , col_no , pos_no , drug_id , drawer_type , board_type , state FROM channel_list
WHERE ( drawer_type = 1 ) AND ( machine_id = @machineId ) GROUP BY drug_id ) t
ON ( od . drug_id = t . drug_id )
WHERE ( oi . dm_status = 0 ) AND ( oi . his_disp_flag = 0 ) AND ( oi . cancel_flag = 0 ) ";
if ( ! string . IsNullOrEmpty ( OrderDate ) )
{
sql + = " AND (DATE_FORMAT(oi.recv_date, '%Y-%m-%d') = @OrderDate ) " ;
}
if ( ! string . IsNullOrEmpty ( Code ) & & ! string . IsNullOrEmpty ( SearchValue ) )
{
if ( Code . Equals ( "OrderNo" ) )
sql + = $" AND ( oi.order_no = '{SearchValue}' ) " ;
else
sql + = $" AND ( oi.patient_id = '{SearchValue}' ) " ;
}
sql + = " GROUP BY oi.order_no LIMIT @Start,@End" ;
MySqlCommand cmd = new MySqlCommand ( sql , con ) ;
cmd . Parameters . Clear ( ) ;
MySqlParameter [ ] mySqlParameter = new MySqlParameter [ ]
{
new MySqlParameter ( "machineId" , ( ConfigurationManager . AppSettings [ "machineId" ] ? ? "DM1" ) ) ,
new MySqlParameter ( "OrderDate" , OrderDate ) ,
new MySqlParameter ( "Start" , pageNum ) ,
new MySqlParameter ( "End" , pageSize )
} ;
cmd . Parameters . AddRange ( mySqlParameter ) ;
//执行语句
MySqlDataReader reader = cmd . ExecuteReader ( ) ;
logger . Info ( "MySqlDataReader读数据" ) ;
while ( reader . Read ( ) )
{
OrderInfo order = new OrderInfo ( ) ;
order . OrderId = reader . GetInt32 ( "order_id" ) ;
order . Pharmacy = reader [ "pharmacy" ] is DBNull ? "" : reader . GetString ( "pharmacy" ) ;
order . OrderNo = reader [ "order_no" ] is DBNull ? "" : reader . GetString ( "order_no" ) ;
order . PatientId = reader [ "patient_id" ] is DBNull ? "" : reader . GetString ( "patient_id" ) ;
order . PName = reader [ "p_name" ] is DBNull ? "" : reader . GetString ( "p_name" ) ;
order . Sex = reader [ "sex" ] is DBNull ? "" : reader . GetString ( "sex" ) ;
order . Age = reader [ "age" ] is DBNull ? "" : reader . GetString ( "age" ) ;
order . IdNumber = reader [ "id_number" ] is DBNull ? "" : reader . GetString ( "id_number" ) ;
order . PatientCard = reader [ "patient_card" ] is DBNull ? "" : reader . GetString ( "patient_card" ) ;
order . InvoiceNo = reader [ "invoice_no" ] is DBNull ? "" : reader . GetString ( "invoice_no" ) ;
order . PatientNo = reader [ "patient_no" ] is DBNull ? "" : reader . GetString ( "patient_no" ) ;
order . DoctorName = reader [ "doctor_name" ] is DBNull ? "" : reader . GetString ( "doctor_name" ) ;
order . OrderDate = reader [ "order_date" ] is DBNull ? DateTime . Now . AddYears ( - 1 ) : reader . GetDateTime ( "order_date" ) ;
order . ChargeDate = reader [ "charge_date" ] is DBNull ? DateTime . Now . AddYears ( - 1 ) : reader . GetDateTime ( "charge_date" ) ;
order . RecvDate = reader [ "recv_date" ] is DBNull ? DateTime . Now . AddYears ( - 1 ) : reader . GetDateTime ( "recv_date" ) ;
order . DeptName = reader [ "dept_name" ] is DBNull ? "" : reader . GetString ( "dept_name" ) ;
order . Disease = reader [ "disease" ] is DBNull ? "" : reader . GetString ( "disease" ) ;
order . OrderType = reader [ "order_type" ] is DBNull ? "" : reader . GetString ( "order_type" ) ;
order . ChargeType = reader [ "charge_type" ] is DBNull ? "" : reader . GetString ( "charge_type" ) ;
order . State = reader . GetInt32 ( "state" ) ;
order . HisDispFlag = reader . GetInt32 ( "his_disp_flag" ) ;
order . CancelFlag = reader . GetInt32 ( "cancel_flag" ) ;
order . DmStatus = reader . GetInt32 ( "dm_status" ) ;
order . Costs = reader [ "costs" ] is DBNull ? 0 : reader . GetInt32 ( "costs" ) ;
orderInfos . Add ( order ) ;
}
reader . Close ( ) ;
logger . Info ( $"sql: {sql}" ) ;
return orderInfos ;
}
}
/// <summary>
/// 根据处方号获取处方详情
/// </summary>
/// <param name="orderNo"></param>
/// <returns></returns>
public List < OrderDetail > GetOrderDetails ( string orderNo , int orderId )
{
List < OrderDetail > orderDetails = new List < OrderDetail > ( ) ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
logger . Info ( $"connStr: {connStr}" ) ;
try
{
if ( con . State ! = ConnectionState . Open )
{
con . Open ( ) ;
}
}
catch ( Exception ex )
{
logger . Info ( $"Open失败: {ex.ToString()};连接状态:{con.State}" ) ;
logger . Info ( "再次Open" ) ;
con . Open ( ) ;
}
logger . Info ( $"数据库连接状态{con.State}" ) ;
string strSql = @ "SELECT od.id,od.patient_id,od.order_no,od.charge_date,od.drug_id,od.quantity,od.order_unit,
od . unit_convercoef , od . set_manu_no , od . set_eff_date , od . use_discrip , od . use_frequ , od . use_once , od . use_by ,
od . use_self , od . use_dosage , D . drug_name
FROM order_detail od
INNER JOIN DRUG_INFO D ON od . DRUG_ID = D . DRUG_ID
Inner JOIN
( SELECT chsguid , chnguid , machine_id , row_no , col_no , pos_no , drug_id , manu_no , eff_date , quantity , drawer_type , board_type , state
FROM channel_stock WHERE ( drawer_type = 1 ) AND ( machine_id = @machineId ) GROUP BY drug_id ) t
ON ( od . drug_id = t . drug_id ) WHERE ( od . order_no = @orderNo and od . order_id = @orderId ) ";
MySqlCommand cmd = new MySqlCommand ( strSql , con ) ;
cmd . Parameters . Clear ( ) ;
MySqlParameter [ ] parameters = new MySqlParameter [ ]
{
new MySqlParameter ( "machineId" , ( ConfigurationManager . AppSettings [ "machineId" ] ? ? "DM1" ) ) ,
new MySqlParameter ( "orderNo" , orderNo ) ,
new MySqlParameter ( "orderId" , orderId )
} ;
cmd . Parameters . AddRange ( parameters ) ;
MySqlDataReader reader = cmd . ExecuteReader ( ) ;
while ( reader . Read ( ) )
{
OrderDetail od = new OrderDetail ( ) ;
DrugInfo oi = new DrugInfo ( ) ;
od . Id = reader . GetInt32 ( "id" ) ;
od . PatientId = reader [ "patient_id" ] is DBNull ? "" : reader . GetString ( "patient_id" ) ;
od . OrderNo = reader [ "order_no" ] is DBNull ? "" : reader . GetString ( "order_no" ) ;
od . ChargeDate = reader [ "charge_date" ] is DBNull ? DateTime . Now . AddYears ( - 1 ) : reader . GetDateTime ( "charge_date" ) ;
od . DrugId = reader [ "drug_id" ] is DBNull ? "" : reader . GetString ( "drug_id" ) ;
od . Quantity = reader [ "quantity" ] is DBNull ? 0 : Convert . ToInt32 ( reader [ "quantity" ] ) ;
od . OrderUnit = reader [ "order_unit" ] is DBNull ? "" : reader . GetString ( "order_unit" ) ;
od . SetEffDate = reader [ "set_eff_date" ] is DBNull ? "" : reader . GetString ( "set_eff_date" ) ;
od . SetManuNo = reader [ "set_manu_no" ] is DBNull ? "" : reader . GetString ( "set_manu_no" ) ;
oi . DrugName = reader [ "drug_name" ] is DBNull ? "" : reader . GetString ( "drug_name" ) ;
od . DrugInfo = oi ;
orderDetails . Add ( od ) ;
}
reader . Close ( ) ;
}
return orderDetails ;
}
/// <summary>
/// 获取药品对应库存信息
/// </summary>
/// <returns></returns>
public List < ChannelStock > GetChannelStocks ( string drugId )
{
List < ChannelStock > channelStocks = new List < ChannelStock > ( ) ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
try
{
if ( con . State ! = ConnectionState . Open )
{
con . Open ( ) ;
}
}
catch ( Exception ex )
{
logger . Info ( $"Open失败: {ex.ToString()};连接状态:{con.State}" ) ;
logger . Info ( "再次Open" ) ;
con . Open ( ) ;
}
string strSql = @ "SELECT cs.chsguid,cs.chnguid,cs.machine_id,cs.row_no,cs.col_no,cs.pos_no,cs.drug_id,cs.manu_no,
cs . eff_date , cs . quantity , cs . drawer_type , cs . board_type , cs . state , D . Drug_Name , D . drug_spec FROM channel_stock cs Inner JOIN channel_list cl ON ( ( cs . chnguid = cl . chnguid ) AND ( cs . drug_id = cl . drug_id ) )
INNER JOIN DRUG_INFO D ON cs . drug_id = D . drug_id
WHERE ( cs . quantity > 0 ) AND ( cs . drawer_type = 1 ) AND ( cs . machine_id = @machineId )
AND ( cs . drug_id = @drugId ) ORDER BY cs . eff_date ASC , cs . row_no ASC , cs . manu_no ASC ";
MySqlCommand cmd = new MySqlCommand ( strSql , con ) ;
cmd . Parameters . Clear ( ) ;
MySqlParameter [ ] parameters = new MySqlParameter [ ] {
new MySqlParameter ( "machineId" , ConfigurationManager . AppSettings [ "machineId" ] ? ? "DM1" ) ,
new MySqlParameter ( "drugId" , drugId )
} ;
cmd . Parameters . AddRange ( parameters ) ;
MySqlDataReader reader = cmd . ExecuteReader ( ) ;
while ( reader . Read ( ) )
{
ChannelStock channelStock = new ChannelStock ( ) ;
DrugInfo drugInfo = new DrugInfo ( ) ;
channelStock . Id = reader [ "chsguid" ] is DBNull ? "" : reader . GetString ( "chsguid" ) ;
channelStock . Chnguid = reader [ "chnguid" ] is DBNull ? "" : reader . GetString ( "chnguid" ) ;
channelStock . MachineId = reader [ "machine_id" ] is DBNull ? "" : reader . GetString ( "machine_id" ) ;
channelStock . DrawerNo = reader [ "row_no" ] is DBNull ? 0 : reader . GetInt32 ( "row_no" ) ;
channelStock . ColNo = reader [ "col_no" ] is DBNull ? 0 : reader . GetInt32 ( "col_no" ) ;
channelStock . DrugId = reader [ "drug_id" ] is DBNull ? "" : reader . GetString ( "drug_id" ) ;
channelStock . ManuNo = reader [ "manu_no" ] is DBNull ? "" : reader . GetString ( "manu_no" ) ;
channelStock . EffDate = reader [ "eff_date" ] is DBNull ? "" : reader . GetString ( "eff_date" ) ;
channelStock . Quantity = reader [ "quantity" ] is DBNull ? 0 : reader . GetInt32 ( "quantity" ) ;
channelStock . DrawerType = reader [ "drawer_type" ] is DBNull ? 0 : reader . GetInt32 ( "drawer_type" ) ;
channelStock . BoardType = reader [ "board_type" ] is DBNull ? 0 : reader . GetInt32 ( "board_type" ) ;
channelStock . State = reader [ "state" ] is DBNull ? 0 : reader . GetInt32 ( "state" ) ;
drugInfo . DrugName = reader [ "Drug_Name" ] is DBNull ? "" : reader . GetString ( "Drug_Name" ) ;
drugInfo . DrugSpec = reader [ "drug_spec" ] is DBNull ? "" : reader . GetString ( "drug_spec" ) ;
channelStock . DrugInfo = drugInfo ;
channelStocks . Add ( channelStock ) ;
}
reader . Close ( ) ;
}
return channelStocks ;
}
/// <summary>
/// 完成处方取药
/// </summary>
/// <returns></returns>
public bool SaveOrderTakeInfo ( string orderNo , string orderDeptName , List < ChannelStock > record )
{
bool bFlag = false ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
if ( con . State ! = ConnectionState . Open )
{
con . Open ( ) ;
}
MySqlTransaction transaction = con . BeginTransaction ( ) ;
try
{
using ( MySqlCommand cmd = new MySqlCommand ( ) )
{
cmd . Connection = con ;
cmd . Transaction = transaction ;
string strSql = $"UPDATE order_info SET dm_status=1 WHERE ORDER_NO='{orderNo}'" ;
cmd . CommandText = strSql ;
cmd . ExecuteNonQuery ( ) ;
for ( int i = 0 ; i < record . Count ; i + + )
{
ChannelStock it = record [ i ] ;
logger . Info ( $"更新ChannelStock:{it.Id}" ) ;
int quantity = it . Quantity - it . TakeQuantity ;
// 更新数据 库存信息
string ssSql = $"UPDATE channel_stock SET quantity={quantity},manu_no='{it.ManuNo}',eff_date='{it.EffDate}' WHERE chsguid='{it.Id}'" ;
cmd . CommandText = ssSql ;
//cmd.CommandText = ssSql;
cmd . ExecuteNonQuery ( ) ;
// 获取更新完库存后的药品库存
List < ChannelStock > nowChannels = new List < ChannelStock > ( ) ;
string querySql = @"SELECT Quantity,Manu_No,drug_id FROM channel_stock WHERE drawer_type=1 and machine_id=@machineId AND drug_id=@drugId " ;
cmd . CommandText = querySql ;
MySqlParameter [ ] parameters = new MySqlParameter [ ] { new MySqlParameter ( "machineId" , ConfigurationManager . AppSettings [ "machineId" ] ? ? "DM1" ) , new MySqlParameter ( "drugId" , it . DrugId ) } ;
cmd . Parameters . Clear ( ) ;
cmd . Parameters . AddRange ( parameters ) ;
MySqlDataReader reader = cmd . ExecuteReader ( ) ;
while ( reader . Read ( ) )
{
ChannelStock stock = new ChannelStock ( ) ;
stock . Quantity = reader [ "Quantity" ] is DBNull ? 0 : reader . GetInt32 ( "Quantity" ) ; ;
stock . DrugId = reader [ "drug_id" ] is DBNull ? "" : reader . GetString ( "drug_id" ) ;
stock . ManuNo = reader [ "Manu_No" ] is DBNull ? "" : reader . GetString ( "Manu_No" ) ;
nowChannels . Add ( stock ) ;
}
reader . Close ( ) ;
logger . Info ( $"保存MachineRecord:{it.ManuNo}" ) ;
DateTime EFFDATE = ! String . IsNullOrEmpty ( it . EffDate ) ? DateTime . ParseExact ( it . EffDate , "yyyy-MM-dd" , System . Globalization . CultureInfo . CurrentCulture ) : DateTime . Now ;
int? operatorUser = HomeWindowViewModel . Operator ? . Id ;
int? reviewerUser = HomeWindowViewModel . Reviewer ? . Id ;
int stockQuantity = nowChannels . Sum ( it = > it . Quantity ) ;
int manunoQuantity = nowChannels . FindAll ( it2 = > it2 . ManuNo = = it . ManuNo ) . Sum ( it = > it . Quantity ) ;
string insertSql = $"INSERT INTO dm_machine_record " +
$"SET MACHINE_ID='{it.MachineId}',drawer_no='{it.DrawerNo}',COL_NO='{it.ColNo}',DRUG_ID='{it.DrugId}',MANU_NO='{it.ManuNo}'," +
$"EFF_DATE='{EFFDATE}',Operator={operatorUser},reviewer={reviewerUser}," +
$"operation_time=NOW(),quantity={it.TakeQuantity},type=2,invoice_id='{orderNo}',stock_quantity={stockQuantity}," +
$"manunoQuantity={manunoQuantity},supplierDept='{SupplierDept}',receiveDept='{orderDeptName}'" ;
cmd . CommandText = insertSql ;
cmd . Parameters . Clear ( ) ;
cmd . ExecuteNonQuery ( ) ;
}
transaction . Commit ( ) ;
bFlag = true ;
}
}
catch ( Exception ex )
{
transaction . Rollback ( ) ;
bFlag = false ;
}
}
return bFlag ;
}
/// <summary>
/// 根据抽屉号、库位号查询库存信息
/// </summary>
/// <param name="rowNo"></param>
/// <param name="colNo"></param>
/// <returns></returns>
public List < ChannelStock > GetChannelStockList ( int rowNo , int colNo )
{
List < ChannelStock > channel = new List < ChannelStock > ( ) ;
//SqlSugarHelper.Db.Queryable<ChannelStock>()
// .Where(cs => cs.MachineId == singleChannels[i].MachineId)
// .Where(cs => cs.DrawerNo == singleChannels[i].DrawerNo)
// .Where(cs => cs.ColNo == singleChannels[i].ColNo)
// //.Where(cs=>cs.Quantity>0)
// .OrderBy(cs => cs.EffDate)
// .ToList();
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
string sql = $"SELECT ROW_NO,COL_NO,eff_date,quantity,manu_no FROM CHANNEL_STOCK WHERE MACHINE_ID='{machine_id}' AND ROW_NO={rowNo} AND COL_NO={colNo} ORDER BY EFF_DATE" ;
MySqlCommand cmd = new MySqlCommand ( sql , con ) ;
MySqlDataReader reader = cmd . ExecuteReader ( ) ;
while ( reader . Read ( ) )
{
ChannelStock cs = new ChannelStock ( ) ;
cs . DrawerNo = reader [ "row_no" ] is DBNull ? 0 : reader . GetInt32 ( "row_no" ) ;
cs . ColNo = reader [ "col_no" ] is DBNull ? 0 : reader . GetInt32 ( "col_no" ) ;
cs . EffDate = reader [ "eff_date" ] is DBNull ? "" : reader . GetString ( "eff_date" ) ;
cs . Quantity = reader [ "quantity" ] is DBNull ? 0 : reader . GetInt32 ( "quantity" ) ;
cs . ManuNo = reader [ "manu_no" ] is DBNull ? "" : reader . GetString ( "manu_no" ) ;
channel . Add ( cs ) ;
}
reader . Close ( ) ;
}
return channel ;
}
#region 抽 屉 取 药
/// <summary>
/// 通过抽屉号获取库存信息
/// </summary>
/// <returns></returns>
public List < ChannelStock > GetChannelStockByDrawer ( int row_no )
{
List < ChannelStock > channelStocks = new List < ChannelStock > ( ) ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
string strSql = $ @ "SELECT CS.chsguid,CS.chnguid,CS.machine_id,CS.row_no,CS.col_no,CS.pos_no,CS.drug_id,CS.manu_no,CS.eff_date,CS.quantity,CS.drawer_type,CS.board_type,CS.state ,
DI . DRUG_NAME , DI . DRUG_SPEC , DI . DRUG_ID
FROM channel_stock CS INNER JOIN drug_info DI ON CS . DRUG_ID = DI . DRUG_ID
WHERE ( row_no = { row_no } ) AND ( CS . drug_id IS NOT NULL ) AND ( machine_id = ' { machine_id } ' ) AND ( drawer_type = 1 ) AND ( quantity > 0 ) ORDER BY col_no ASC , eff_date ASC ";
MySqlCommand cmd = new MySqlCommand ( strSql , con ) ;
MySqlDataReader reader = cmd . ExecuteReader ( ) ;
while ( reader . Read ( ) )
{
ChannelStock stock = new ChannelStock ( ) ;
DrugInfo drug = new DrugInfo ( ) ;
stock . Id = reader [ "chsguid" ] is DBNull ? "" : reader . GetString ( "chsguid" ) ;
stock . Chnguid = reader [ "chnguid" ] is DBNull ? "" : reader . GetString ( "chnguid" ) ;
stock . DrawerNo = row_no ;
stock . ColNo = reader [ "col_no" ] is DBNull ? 0 : reader . GetInt32 ( "col_no" ) ;
stock . ManuNo = reader [ "manu_no" ] is DBNull ? "" : reader . GetString ( "manu_no" ) ;
stock . EffDate = reader [ "eff_date" ] is DBNull ? "" : reader . GetString ( "eff_date" ) ;
stock . Quantity = reader [ "quantity" ] is DBNull ? 0 : reader . GetInt32 ( "quantity" ) ;
stock . BoardType = reader [ "board_type" ] is DBNull ? 0 : reader . GetInt32 ( "board_type" ) ;
stock . MachineId = reader [ "machine_id" ] is DBNull ? "" : reader . GetString ( "machine_id" ) ;
drug . DrugName = reader [ "DRUG_NAME" ] is DBNull ? "" : reader . GetString ( "DRUG_NAME" ) ;
drug . DrugSpec = reader [ "DRUG_SPEC" ] is DBNull ? "" : reader . GetString ( "DRUG_SPEC" ) ;
drug . DrugId = reader [ "DRUG_ID" ] is DBNull ? "" : reader . GetString ( "DRUG_ID" ) ;
stock . DrugInfo = drug ;
stock . DrugId = reader [ "DRUG_ID" ] is DBNull ? "" : reader . GetString ( "DRUG_ID" ) ;
channelStocks . Add ( stock ) ;
}
reader . Close ( ) ;
return channelStocks ;
}
}
/// <summary>
/// 抽屉取药保存数据
/// </summary>
/// <param name="record"></param>
/// <returns></returns>
public bool SaveDrawerTakeDrug ( List < ChannelStock > record )
{
bool iRet = false ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
MySqlCommand cmd = new MySqlCommand ( ) ;
cmd . Connection = con ;
MySqlTransaction transaction = con . BeginTransaction ( ) ;
cmd . Transaction = transaction ;
try
{
for ( int i = 0 ; i < record . Count ; i + + )
{
ChannelStock it = record [ i ] ;
string strSql = @"UPDATE channel_stock SET manu_no=@manu_no,eff_date=@eff_date, quantity=@quantity WHERE chsguid=@chsguid" ;
MySqlParameter [ ] parameter = new MySqlParameter [ ] {
new MySqlParameter ( "manu_no" , it . ManuNo ) ,
new MySqlParameter ( "eff_date" , it . EffDate ) ,
new MySqlParameter ( "quantity" , it . Quantity - it . TakeQuantity ) ,
new MySqlParameter ( "chsguid" , it . Id )
} ;
cmd . CommandText = strSql ;
cmd . Parameters . Clear ( ) ;
cmd . Parameters . AddRange ( parameter ) ;
// 更新数据 库存信息
int iResult = cmd . ExecuteNonQuery ( ) ;
logger . Info ( $"Updateable_ChannelStock完成{iResult}" ) ;
// 获取更新完库存后的药品库存
string querySql = @ $ "SELECT chsguid,chnguid,machine_id,row_no,col_no,pos_no,drug_id,manu_no,eff_date,quantity,drawer_type,board_type,
state FROM channel_stock WHERE ( machine_id = ' { machine_id } ' ) AND ( drug_id = ' { it . DrugId } ' ) AND ( drawer_type = 1 ) ";
cmd . CommandText = querySql ;
MySqlDataReader reader = cmd . ExecuteReader ( ) ;
List < ChannelStock > nowChannels = new List < ChannelStock > ( ) ;
while ( reader . Read ( ) )
{
ChannelStock stock = new ChannelStock ( ) ;
stock . Quantity = reader [ "quantity" ] is null ? 0 : reader . GetInt32 ( "quantity" ) ;
stock . ManuNo = reader [ "manu_no" ] is null ? "" : reader . GetString ( "manu_no" ) ;
nowChannels . Add ( stock ) ;
}
reader . Close ( ) ;
logger . Info ( "Queryable_ChannelStock完成" ) ;
int stockQuantity = nowChannels . Sum ( it = > it . Quantity ) ;
int manuQuantity = nowChannels . FindAll ( it2 = > it2 . ManuNo = = it . ManuNo ) . Sum ( it = > it . Quantity ) ;
DateTime ? EffDate = ! String . IsNullOrEmpty ( it . EffDate ) ? DateTime . ParseExact ( it . EffDate , "yyyy-MM-dd" , System . Globalization . CultureInfo . CurrentCulture ) : null ;
string InvoiceId = "DRAWER_" + ( long ) ( DateTime . UtcNow - Jan1st1970 ) . TotalMilliseconds ;
int? operatorUser = HomeWindowViewModel . Operator ? . Id ;
int? reviewerUser = HomeWindowViewModel . Reviewer ? . Id ;
string insertSql = @ $ "INSERT INTO dm_machine_record
( machine_id , drug_id , quantity , stock_quantity , manu_no , operator , reviewer , operation_time , eff_date ,
type , invoice_id , col_no , drawer_no , manunoQuantity , supplierDept , receiveDept )
VALUES
( ' { machine_id } ',' { it . DrugId } ' , { it . TakeQuantity } , { stockQuantity } , ' { it . ManuNo } ' , { operatorUser } , { reviewerUser } , ' { DateTime . Now } ',' { EffDate } ' , 2 , ' { InvoiceId } ' ,
{ it . ColNo } , { it . DrawerNo } , { manuQuantity } , ' { SupplierDept } ',' { ReceiveDept } ' ) ";
cmd . CommandText = insertSql ;
iResult = cmd . ExecuteNonQuery ( ) ;
logger . Info ( $"Insert_MachineRecord完成{iResult}" ) ;
logger . Info ( $"抽屉取药保存->库位【{it.DrawerNo}-{it.ColNo}】取出药品【{it.DrugInfo.DrugName}】个数【{it.TakeQuantity}】,取药前库存【{it.Quantity}】" ) ;
}
transaction . Commit ( ) ;
iRet = true ;
}
catch ( Exception ex )
{
transaction . Rollback ( ) ;
logger . Info ( $"SaveDrawerTakeDrug Exception:{ex.Message}" ) ;
iRet = false ;
}
}
return iRet ;
}
//查询该库位下非0的近效期及批次重新绑定
//更新绑定的效期、批次
public ChannelStock GetMinManuEffDate ( ChannelStock groupCS )
{
ChannelStock newBind = new ChannelStock ( ) ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
string strSql = @ $ "SELECT chsguid,chnguid,machine_id,row_no,col_no,pos_no,drug_id,manu_no,eff_date,quantity,drawer_type,board_type,state
FROM channel_stock WHERE ( machine_id = ' { machine_id } ' ) AND ( row_no = ' { groupCS . DrawerNo } ' ) AND ( col_no = { groupCS . ColNo } ) AND ( quantity > 0 )
ORDER BY eff_date ASC LIMIT 0 , 1 ";
MySqlCommand cmd = new MySqlCommand ( strSql , con ) ;
MySqlDataReader reader = cmd . ExecuteReader ( ) ;
while ( reader . Read ( ) )
{
newBind . EffDate = reader [ "eff_date" ] is DBNull ? "" : reader . GetString ( "eff_date" ) ;
newBind . ManuNo = reader [ "manu_no" ] is DBNull ? "" : reader . GetString ( "manu_no" ) ;
newBind . DrawerNo = reader [ "row_no" ] is DBNull ? 0 : reader . GetInt32 ( "row_no" ) ;
newBind . ColNo = reader [ "col_no" ] is DBNull ? 0 : reader . GetInt32 ( "col_no" ) ;
}
reader . Close ( ) ;
}
return newBind ;
}
#endregion
#region 自 选 取 药
/// <summary>
/// 自选取药页面加载数据
/// </summary>
/// <returns></returns>
public List < DrugInfo > GetSelfTakeInfo ( string Code , string SearchValue , int pageNum , int pageSize , ref int totalCount )
{
List < DrugInfo > drugs = new List < DrugInfo > ( ) ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
totalCount = 0 ;
pageNum = ( pageNum - 1 ) * pageSize ;
MySqlCommand cmd = new MySqlCommand ( ) ;
cmd . Connection = con ;
string countSql = @ $ "SELECT Count(1) FROM drug_info di WHERE
( EXISTS ( SELECT 1 FROM channel_stock cs WHERE ( ( cs . machine_id = ' { machine_id } ' ) AND ( cs . drug_id IS NOT NULL ) )
AND drug_id = di . drug_id ) ) ";
if ( ! string . IsNullOrEmpty ( Code ) & & ! string . IsNullOrEmpty ( SearchValue ) )
{
if ( Code . Equals ( "DrugName" ) )
countSql + = $" AND (drug_name like concat('%{SearchValue}%')) " ;
if ( Code . Equals ( "PyCode" ) )
countSql + = $" AND ( oi.py_code like concat '%{SearchValue}%' ) " ;
if ( Code . Equals ( "DrugBarcode" ) )
countSql + = $" AND drug_barcode like concat '%{SearchValue}%'" ;
if ( Code . Equals ( "DrugId" ) )
countSql + = $" AND drug_id LIKE CONCAT('%{SearchValue}%')" ;
}
cmd . CommandText = countSql ;
cmd . Connection = con ;
//执行语句
totalCount = Convert . ToInt32 ( cmd . ExecuteScalar ( ) ) ;
string strSql = @ $ "SELECT drug_id,py_code,drug_barcode,drug_name,drug_brand_name,drug_spec,dosage,pack_unit,manufactory,max_stock FROM drug_info di
WHERE ( EXISTS ( SELECT 1 FROM channel_stock cs
WHERE ( ( cs . machine_id = ' { machine_id } ' ) AND ( cs . drug_id IS NOT NULL ) ) AND drug_id = di . drug_id ) ) ";
if ( ! string . IsNullOrEmpty ( Code ) & & ! string . IsNullOrEmpty ( SearchValue ) )
{
if ( Code . Equals ( "DrugName" ) )
strSql + = $" AND (drug_name like concat('%{SearchValue}%')) " ;
if ( Code . Equals ( "PyCode" ) )
strSql + = $" AND ( oi.py_code like concat '%{SearchValue}%' ) " ;
if ( Code . Equals ( "DrugBarcode" ) )
strSql + = $" AND drug_barcode like concat '%{SearchValue}%'" ;
if ( Code . Equals ( "DrugId" ) )
strSql + = $" AND drug_id LIKE CONCAT('%{SearchValue}%')" ;
}
strSql + = $" ORDER BY drug_id ASC LIMIT {pageNum},{pageSize} " ;
DataSet ds = new DataSet ( ) ;
MySqlDataAdapter sda = new MySqlDataAdapter ( strSql , con ) ;
sda . Fill ( ds ) ;
if ( ds ! = null & & ds . Tables [ 0 ] . Rows . Count > 0 )
{
for ( int i = 0 ; i < ds . Tables [ 0 ] . Rows . Count ; i + + )
{
DrugInfo drug = new DrugInfo ( ) ;
List < ChannelStock > stocks = new List < ChannelStock > ( ) ;
drug . DrugId = ds . Tables [ 0 ] . Rows [ i ] [ "drug_id" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "drug_id" ] . ToString ( ) ;
drug . PyCode = ds . Tables [ 0 ] . Rows [ i ] [ "py_code" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "py_code" ] . ToString ( ) ;
drug . DrugBarcode = ds . Tables [ 0 ] . Rows [ i ] [ "drug_barcode" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "drug_barcode" ] . ToString ( ) ;
drug . DrugName = ds . Tables [ 0 ] . Rows [ i ] [ "drug_name" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "drug_name" ] . ToString ( ) ;
drug . DrugBrandname = ds . Tables [ 0 ] . Rows [ i ] [ "drug_brand_name" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "drug_brand_name" ] . ToString ( ) ;
drug . DrugSpec = ds . Tables [ 0 ] . Rows [ i ] [ "drug_spec" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "drug_spec" ] . ToString ( ) ;
drug . Dosage = ds . Tables [ 0 ] . Rows [ i ] [ "dosage" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "dosage" ] . ToString ( ) ;
drug . PackUnit = ds . Tables [ 0 ] . Rows [ i ] [ "pack_unit" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "pack_unit" ] . ToString ( ) ;
drug . Manufactory = ds . Tables [ 0 ] . Rows [ i ] [ "manufactory" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "manufactory" ] . ToString ( ) ;
drug . MaxStock = ds . Tables [ 0 ] . Rows [ i ] [ "max_stock" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "max_stock" ] ) ;
if ( ! string . IsNullOrEmpty ( drug . DrugId ) )
{
string stockSql = @ $ "SELECT chsguid AS Id,chnguid AS Chnguid,machine_id AS MachineId,row_no AS DrawerNo,col_no AS ColNo,
pos_no AS PosNo , drug_id AS DrugId , manu_no AS ManuNo , eff_date AS EffDate , quantity AS Quantity ,
drawer_type AS DrawerType , board_type AS BoardType , state AS State FROM channel_stock WHERE drawer_type = 1
AND quantity > 0 AND drug_id = ' { drug . DrugId } ' AND machine_id = ' { machine_id } ' ORDER BY row_no , col_no ";
cmd . CommandText = stockSql ;
MySqlDataReader reader = cmd . ExecuteReader ( ) ;
while ( reader . Read ( ) )
{
ChannelStock stock = new ChannelStock ( ) ;
stock . DrawerNo = reader [ "DrawerNo" ] is DBNull ? 0 : reader . GetInt32 ( "DrawerNo" ) ;
stock . ColNo = reader [ "ColNo" ] is DBNull ? 0 : reader . GetInt32 ( "ColNo" ) ;
stock . ManuNo = reader [ "ManuNo" ] is DBNull ? "" : reader . GetString ( "ManuNo" ) ;
stock . EffDate = reader [ "EffDate" ] is DBNull ? "" : reader . GetString ( "EffDate" ) ;
stock . Quantity = reader [ "Quantity" ] is DBNull ? 0 : reader . GetInt32 ( "Quantity" ) ;
stock . MachineId = reader [ "MachineId" ] is DBNull ? "" : reader . GetString ( "MachineId" ) ;
stock . DrugId = reader [ "DrugId" ] is DBNull ? "" : reader . GetString ( "DrugId" ) ;
stock . Id = reader [ "Id" ] is DBNull ? "" : reader . GetString ( "Id" ) ;
stocks . Add ( stock ) ;
}
reader . Close ( ) ;
}
drug . channelStocks = stocks ;
drugs . Add ( drug ) ;
}
}
}
catch ( Exception ex )
{
logger . Info ( $"GetSelfTakeInfo Exception:{ex.Message}" ) ;
}
}
return drugs ;
}
/// <summary>
/// 自选取药保存数据
/// </summary>
/// <returns></returns>
public bool SaveSelfTakeInfo ( List < ChannelStock > record )
{
bool iRet = false ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
MySqlTransaction transaction = con . BeginTransaction ( ) ;
MySqlCommand cmd = new MySqlCommand ( ) ;
cmd . Transaction = transaction ;
cmd . Connection = con ;
try
{
for ( int i = 0 ; i < record . Count ; i + + )
{
ChannelStock it = record [ i ] ;
int quantity = it . Quantity - it . TakeQuantity ;
string strSql = $"UPDATE channel_stock SET quantity={quantity},manu_no='{it.ManuNo}',eff_date='{it.EffDate}' WHERE chsguid='{it.Id}'" ;
cmd . CommandText = strSql ;
// 更新数据 库存信息
int iResult = cmd . ExecuteNonQuery ( ) ;
// 获取更新完库存后的药品库存
string querySql = $@"SELECT quantity,manu_no FROM channel_stock WHERE drawer_type=1 AND MACHINE_ID='{it.MachineId}' and DRUG_ID='{it.DrugId}'" ;
cmd . CommandText = querySql ;
MySqlDataReader reader = cmd . ExecuteReader ( ) ;
List < ChannelStock > nowChannels = new List < ChannelStock > ( ) ;
while ( reader . Read ( ) )
{
ChannelStock stock = new ChannelStock ( ) ;
stock . Quantity = reader [ "quantity" ] is DBNull ? 0 : reader . GetInt32 ( "quantity" ) ;
stock . ManuNo = reader [ "manu_no" ] is DBNull ? "" : reader . GetString ( "manu_no" ) ;
nowChannels . Add ( stock ) ;
}
reader . Close ( ) ;
// 保存数据 出/入库记录
int stockQuantity = nowChannels . Sum ( it = > it . Quantity ) ;
int manunoQuantity = nowChannels . FindAll ( it2 = > it2 . ManuNo = = it . ManuNo ) . Sum ( it = > it . Quantity ) ;
DateTime ? EFFDATE = ! String . IsNullOrEmpty ( it . EffDate ) ? DateTime . ParseExact ( it . EffDate , "yyyy-MM-dd" , System . Globalization . CultureInfo . CurrentCulture ) : null ;
string InvoiceId = "SELF_" + ( long ) ( DateTime . UtcNow - Jan1st1970 ) . TotalMilliseconds ;
int? operatorUser = HomeWindowViewModel . Operator ? . Id ;
int? reviewerUser = HomeWindowViewModel . Reviewer ? . Id ;
string insertSql = $"INSERT INTO dm_machine_record " +
$"SET MACHINE_ID='{it.MachineId}',drawer_no='{it.DrawerNo}',COL_NO='{it.ColNo}',DRUG_ID='{it.DrugId}',MANU_NO='{it.ManuNo}'," +
$"EFF_DATE='{EFFDATE}',Operator={operatorUser},reviewer={reviewerUser}," +
$"operation_time=NOW(),quantity={it.TakeQuantity},type=2,invoice_id='{InvoiceId}',stock_quantity={stockQuantity}," +
$"manunoQuantity={manunoQuantity},supplierDept='{SupplierDept}',receiveDept='{ReceiveDept}'" ;
cmd . CommandText = insertSql ;
cmd . Parameters . Clear ( ) ;
cmd . ExecuteNonQuery ( ) ;
}
transaction . Commit ( ) ;
iRet = true ;
}
catch ( Exception ex )
{
transaction . Rollback ( ) ;
logger . Info ( $"SaveSelfTakeInfo Exception:{ex.Message}" ) ;
iRet = false ;
}
}
return iRet ;
}
#endregion
#region 加 药
/// <summary>
/// 自选加药页面加载数据
/// </summary>
/// <param name="Code"></param>
/// <param name="SearchValue"></param>
/// <param name="pageNum"></param>
/// <param name="pageSize"></param>
/// <param name="totalCount"></param>
/// <returns></returns>
public List < DrugInfo > GetSelfAddInfo ( string Code , string SearchValue , int pageNum , int pageSize , ref int totalCount )
{
List < DrugInfo > drugs = new List < DrugInfo > ( ) ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
totalCount = 0 ;
pageNum = ( pageNum - 1 ) * pageSize ;
MySqlCommand cmd = new MySqlCommand ( ) ;
cmd . Connection = con ;
string countSql = @ $ "SELECT Count(1) FROM drug_info di WHERE
( EXISTS ( SELECT 1 FROM channel_stock cs WHERE ( ( cs . machine_id = ' { machine_id } ' ) AND ( cs . drug_id IS NOT NULL ) )
AND drug_id = di . drug_id ) ) ";
if ( ! string . IsNullOrEmpty ( Code ) & & ! string . IsNullOrEmpty ( SearchValue ) )
{
if ( Code . Equals ( "DrugName" ) )
countSql + = $" AND (drug_name like concat('%{SearchValue}%')) " ;
if ( Code . Equals ( "PyCode" ) )
countSql + = $" AND ( oi.py_code like concat '%{SearchValue}%' ) " ;
if ( Code . Equals ( "DrugBarcode" ) )
countSql + = $" AND drug_barcode like concat '%{SearchValue}%'" ;
if ( Code . Equals ( "DrugId" ) )
countSql + = $" AND drug_id LIKE CONCAT('%{SearchValue}%')" ;
}
cmd . CommandText = countSql ;
cmd . Connection = con ;
//执行语句
totalCount = Convert . ToInt32 ( cmd . ExecuteScalar ( ) ) ;
string strSql = @ $ "SELECT drug_id,py_code,drug_barcode,drug_name,drug_brand_name,drug_spec,dosage,pack_unit,manufactory,max_stock FROM drug_info di
WHERE ( EXISTS ( SELECT 1 FROM channel_stock cs
WHERE ( ( cs . machine_id = ' { machine_id } ' ) AND ( cs . drug_id IS NOT NULL ) ) AND drug_id = di . drug_id ) ) ";
if ( ! string . IsNullOrEmpty ( Code ) & & ! string . IsNullOrEmpty ( SearchValue ) )
{
if ( Code . Equals ( "DrugName" ) )
strSql + = $" AND (drug_name like concat('%{SearchValue}%')) " ;
if ( Code . Equals ( "PyCode" ) )
strSql + = $" AND ( oi.py_code like concat '%{SearchValue}%' ) " ;
if ( Code . Equals ( "DrugBarcode" ) )
strSql + = $" AND drug_barcode like concat '%{SearchValue}%'" ;
if ( Code . Equals ( "DrugId" ) )
strSql + = $" AND drug_id LIKE CONCAT('%{SearchValue}%')" ;
}
strSql + = $" ORDER BY drug_id ASC LIMIT {pageNum},{pageSize} " ;
DataSet ds = new DataSet ( ) ;
MySqlDataAdapter sda = new MySqlDataAdapter ( strSql , con ) ;
sda . Fill ( ds ) ;
if ( ds ! = null & & ds . Tables [ 0 ] . Rows . Count > 0 )
{
for ( int i = 0 ; i < ds . Tables [ 0 ] . Rows . Count ; i + + )
{
DrugInfo drug = new DrugInfo ( ) ;
List < ChannelStock > stocks = new List < ChannelStock > ( ) ;
drug . DrugId = ds . Tables [ 0 ] . Rows [ i ] [ "drug_id" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "drug_id" ] . ToString ( ) ;
drug . PyCode = ds . Tables [ 0 ] . Rows [ i ] [ "py_code" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "py_code" ] . ToString ( ) ;
drug . DrugBarcode = ds . Tables [ 0 ] . Rows [ i ] [ "drug_barcode" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "drug_barcode" ] . ToString ( ) ;
drug . DrugName = ds . Tables [ 0 ] . Rows [ i ] [ "drug_name" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "drug_name" ] . ToString ( ) ;
drug . DrugBrandname = ds . Tables [ 0 ] . Rows [ i ] [ "drug_brand_name" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "drug_brand_name" ] . ToString ( ) ;
drug . DrugSpec = ds . Tables [ 0 ] . Rows [ i ] [ "drug_spec" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "drug_spec" ] . ToString ( ) ;
drug . Dosage = ds . Tables [ 0 ] . Rows [ i ] [ "dosage" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "dosage" ] . ToString ( ) ;
drug . PackUnit = ds . Tables [ 0 ] . Rows [ i ] [ "pack_unit" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "pack_unit" ] . ToString ( ) ;
drug . Manufactory = ds . Tables [ 0 ] . Rows [ i ] [ "manufactory" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "manufactory" ] . ToString ( ) ;
drug . MaxStock = ds . Tables [ 0 ] . Rows [ i ] [ "max_stock" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "max_stock" ] ) ;
if ( ! string . IsNullOrEmpty ( drug . DrugId ) )
{
string stockSql = @ $ "SELECT chsguid AS Id,chnguid AS Chnguid,machine_id AS MachineId,row_no AS DrawerNo,col_no AS ColNo,
pos_no AS PosNo , drug_id AS DrugId , manu_no AS ManuNo , eff_date AS EffDate , quantity AS Quantity ,
drawer_type AS DrawerType , board_type AS BoardType , state AS State FROM channel_stock WHERE drawer_type = 1
AND drug_id = ' { drug . DrugId } ' AND machine_id = ' { machine_id } ' ORDER BY row_no , col_no ";
cmd . CommandText = stockSql ;
MySqlDataReader reader = cmd . ExecuteReader ( ) ;
while ( reader . Read ( ) )
{
ChannelStock stock = new ChannelStock ( ) ;
stock . DrawerNo = reader [ "DrawerNo" ] is DBNull ? 0 : reader . GetInt32 ( "DrawerNo" ) ;
stock . ColNo = reader [ "ColNo" ] is DBNull ? 0 : reader . GetInt32 ( "ColNo" ) ;
stock . ManuNo = reader [ "ManuNo" ] is DBNull ? "" : reader . GetString ( "ManuNo" ) ;
stock . EffDate = reader [ "EffDate" ] is DBNull ? "" : reader . GetString ( "EffDate" ) ;
stock . Quantity = reader [ "Quantity" ] is DBNull ? 0 : reader . GetInt32 ( "Quantity" ) ;
stock . MachineId = reader [ "MachineId" ] is DBNull ? "" : reader . GetString ( "MachineId" ) ;
stock . DrugId = reader [ "DrugId" ] is DBNull ? "" : reader . GetString ( "DrugId" ) ;
stock . Id = reader [ "Id" ] is DBNull ? "" : reader . GetString ( "Id" ) ;
stocks . Add ( stock ) ;
}
reader . Close ( ) ;
}
drug . channelStocks = stocks ;
drugs . Add ( drug ) ;
}
}
}
catch ( Exception ex )
{
logger . Info ( $"GetSelfTakeInfo Exception:{ex.Message}" ) ;
}
}
return drugs ;
}
/// <summary>
/// 保存自选加药数据
/// </summary>
/// <param name="record"></param>
/// <returns></returns>
public bool SaveSelfAddInfo ( List < ChannelStock > record , string invoiceId )
{
bool iRet = false ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
for ( int i = 0 ; i < record . Count ; i + + )
{
MySqlTransaction transaction = con . BeginTransaction ( ) ;
ChannelStock it = record [ i ] ;
try
{
MySqlCommand cmd = new MySqlCommand ( ) ;
cmd . Transaction = transaction ;
cmd . Connection = con ;
int quantity = it . Quantity + it . AddQuantity ;
// 更新数据 库存信息
string updateSql = $@"UPDATE channel_stock SET QUANTITY={quantity},pos_no=1,MANU_NO='{it.ManuNo}',eff_date='{it.EffDate}' WHERE chsguid='{it.Id}'" ;
cmd . CommandText = updateSql ;
int iResult = cmd . ExecuteNonQuery ( ) ;
// 获取更新完库存后的药品库存
string querySql = $@"SELECT quantity,manu_no FROM channel_stock WHERE drawer_type=1 AND MACHINE_ID='{it.MachineId}' and DRUG_ID='{it.DrugId}'" ;
cmd . CommandText = querySql ;
MySqlDataReader reader = cmd . ExecuteReader ( ) ;
List < ChannelStock > nowChannels = new List < ChannelStock > ( ) ;
while ( reader . Read ( ) )
{
ChannelStock stock = new ChannelStock ( ) ;
stock . Quantity = reader [ "quantity" ] is DBNull ? 0 : reader . GetInt32 ( "quantity" ) ;
stock . ManuNo = reader [ "manu_no" ] is DBNull ? "" : reader . GetString ( "manu_no" ) ;
nowChannels . Add ( stock ) ;
}
reader . Close ( ) ;
// 保存数据 出/入库记录
int stockQuantity = nowChannels . Sum ( it = > it . Quantity ) ;
int manunoQuantity = nowChannels . FindAll ( it2 = > it2 . ManuNo = = it . ManuNo ) . Sum ( it = > it . Quantity ) ;
DateTime ? EFFDATE = ! String . IsNullOrEmpty ( it . EffDate ) ? DateTime . ParseExact ( it . EffDate , "yyyy-MM-dd" , System . Globalization . CultureInfo . CurrentCulture ) : null ;
if ( string . IsNullOrEmpty ( invoiceId ) )
{
invoiceId = "SELF_" + ( long ) ( DateTime . UtcNow - Jan1st1970 ) . TotalMilliseconds ;
}
int? operatorUser = HomeWindowViewModel . Operator ? . Id ;
int? reviewerUser = HomeWindowViewModel . Reviewer ? . Id ;
string insertSql = $"INSERT INTO dm_machine_record " +
$"SET MACHINE_ID='{it.MachineId}',drawer_no='{it.DrawerNo}',COL_NO='{it.ColNo}',DRUG_ID='{it.DrugId}',MANU_NO='{it.ManuNo}'," +
$"EFF_DATE='{EFFDATE}',Operator={operatorUser},reviewer={reviewerUser}," +
$"operation_time=NOW(),quantity={it.AddQuantity},type=1,invoice_id='{invoiceId}',stock_quantity={stockQuantity}," +
$"manunoQuantity={manunoQuantity},supplierDept='{SupplierDept}',receiveDept='{ReceiveDept}'" ;
cmd . CommandText = insertSql ;
cmd . Parameters . Clear ( ) ;
cmd . ExecuteNonQuery ( ) ;
transaction . Commit ( ) ;
iRet = true ;
}
catch ( Exception ex )
{
logger . Info ( $"保存自选加药——异常:{ex.Message}" ) ;
transaction . Rollback ( ) ;
iRet = false ;
}
}
}
return iRet ;
}
/// <summary>
/// 抽屉加药页面获取数据
/// </summary>
/// <param name="row_no"></param>
/// <returns></returns>
public List < ChannelStock > GetDrawerAddInfo ( int row_no )
{
List < ChannelStock > channelStocks = new List < ChannelStock > ( ) ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
string strSql = $ @ "SELECT CS.chsguid,CS.chnguid,CS.machine_id,CS.row_no,CS.col_no,CS.pos_no,CS.drug_id,CS.manu_no,CS.eff_date,CS.quantity,CS.drawer_type,CS.board_type,CS.state ,
DI . DRUG_NAME , DI . DRUG_SPEC , DI . DRUG_ID
FROM channel_stock CS INNER JOIN drug_info DI ON CS . DRUG_ID = DI . DRUG_ID
WHERE ( row_no = { row_no } ) AND ( CS . drug_id IS NOT NULL ) AND ( machine_id = ' { machine_id } ' ) AND ( drawer_type = 1 ) AND ( quantity > 0 ) ORDER BY col_no ASC , eff_date ASC ";
MySqlDataAdapter mySqlDataAdapter = new MySqlDataAdapter ( strSql , con ) ;
DataSet ds = new DataSet ( ) ;
mySqlDataAdapter . Fill ( ds ) ;
MySqlCommand cmd = new MySqlCommand ( ) ;
cmd . Connection = con ;
if ( ds ! = null & & ds . Tables [ 0 ] ! = null & & ds . Tables [ 0 ] . Rows . Count > 0 )
{
for ( int i = 0 ; i < ds . Tables [ 0 ] . Rows . Count ; i + + )
{
ChannelStock stock = new ChannelStock ( ) ;
DrugInfo drug = new DrugInfo ( ) ;
List < DrugManuNo > drugManuNos = new List < DrugManuNo > ( ) ;
DrugManuNo drugManu = new DrugManuNo ( ) ;
stock . Id = ds . Tables [ 0 ] . Rows [ i ] [ "chsguid" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "chsguid" ] . ToString ( ) ;
stock . Chnguid = ds . Tables [ 0 ] . Rows [ i ] [ "chnguid" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "chnguid" ] . ToString ( ) ;
stock . DrawerNo = row_no ;
stock . ColNo = ds . Tables [ 0 ] . Rows [ i ] [ "col_no" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "col_no" ] ) ;
stock . ManuNo = ds . Tables [ 0 ] . Rows [ i ] [ "manu_no" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "manu_no" ] . ToString ( ) ;
stock . EffDate = ds . Tables [ 0 ] . Rows [ i ] [ "eff_date" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "eff_date" ] . ToString ( ) ;
stock . Quantity = ds . Tables [ 0 ] . Rows [ i ] [ "quantity" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "quantity" ] ) ;
stock . BoardType = ds . Tables [ 0 ] . Rows [ i ] [ "board_type" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "board_type" ] ) ;
stock . MachineId = ds . Tables [ 0 ] . Rows [ i ] [ "machine_id" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "machine_id" ] . ToString ( ) ;
drug . DrugName = ds . Tables [ 0 ] . Rows [ i ] [ "DRUG_NAME" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "DRUG_NAME" ] . ToString ( ) ;
drug . DrugSpec = ds . Tables [ 0 ] . Rows [ i ] [ "DRUG_SPEC" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "DRUG_SPEC" ] . ToString ( ) ;
drug . DrugId = ds . Tables [ 0 ] . Rows [ i ] [ "DRUG_ID" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "DRUG_ID" ] . ToString ( ) ;
string drugManuNosSql = @ $"SELECT dmnguid,DRUG_ID,Manu_No,manu_date,eff_date FROM drug_manu_no WHERE DRUG_ID='{drug.DrugId}' AND use_flag=1 " ;
cmd . CommandText = drugManuNosSql ;
MySqlDataReader reader = cmd . ExecuteReader ( ) ;
while ( reader . Read ( ) )
{
DrugManuNo drugManuNo = new DrugManuNo ( ) ;
drugManuNo . Id = reader [ "dmnguid" ] is DBNull ? "" : reader . GetString ( "dmnguid" ) ;
drugManuNo . DrugId = reader [ "DRUG_ID" ] is DBNull ? "" : reader . GetString ( "DRUG_ID" ) ;
drugManuNo . ManuNo = reader [ "Manu_No" ] is DBNull ? "" : reader . GetString ( "Manu_No" ) ;
drugManuNo . ManuDate = reader [ "manu_date" ] is DBNull ? "" : reader . GetString ( "manu_date" ) ;
drugManuNo . EffDate = reader [ "eff_date" ] is DBNull ? "" : reader . GetString ( "eff_date" ) ;
drugManuNos . Add ( drugManuNo ) ;
}
reader . Close ( ) ;
drug . DrugManuNos = drugManuNos ;
stock . DrugInfo = drug ;
stock . DrugId = ds . Tables [ 0 ] . Rows [ i ] [ "DRUG_ID" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "DRUG_ID" ] . ToString ( ) ;
drugManu . ManuNo = ds . Tables [ 0 ] . Rows [ i ] [ "manu_no" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "manu_no" ] . ToString ( ) ;
drugManu . EffDate = ds . Tables [ 0 ] . Rows [ i ] [ "eff_date" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "eff_date" ] . ToString ( ) ;
stock . drugManuNo = drugManu ;
channelStocks . Add ( stock ) ;
}
}
return channelStocks ;
}
}
/// <summary>
/// 保存抽屉加药数据
/// </summary>
/// <returns></returns>
public bool SaveDrawerAdd ( List < ChannelStock > record , string PZH )
{
bool iRet = false ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
MySqlTransaction transaction = con . BeginTransaction ( ) ;
try
{
MySqlCommand cmd = new MySqlCommand ( ) ;
cmd . Connection = con ;
cmd . Transaction = transaction ;
for ( int i = 0 ; i < record . Count ; i + + )
{
ChannelStock it = record [ i ] ;
it . ManuNo = it . drugManuNo . ManuNo ;
it . EffDate = it . drugManuNo . EffDate ;
int quantity = it . Quantity + it . AddQuantity ;
string updateSql = $@"UPDATE channel_stock SET QUANTITY={quantity},MANU_NO='{it.ManuNo}',EFF_DATE='{it.EffDate}' WHERE CHSGUID='{it.Id}'" ;
cmd . CommandText = updateSql ;
// 更新数据 库存信息
int iResult = cmd . ExecuteNonQuery ( ) ;
// 获取更新完库存后的药品库存
string querySql = $@"SELECT Quantity,Manu_No FROM channel_stock WHERE DRAWER_TYPE=1 AND MACHINE_ID='{machine_id}' and drug_id='{it.DrugId}' " ;
cmd . CommandText = querySql ;
MySqlDataReader reader = cmd . ExecuteReader ( ) ;
List < ChannelStock > nowChannels = new List < ChannelStock > ( ) ;
while ( reader . Read ( ) )
{
ChannelStock stock = new ChannelStock ( ) ;
stock . Quantity = reader [ "Quantity" ] is DBNull ? 0 : reader . GetInt32 ( "Quantity" ) ;
stock . ManuNo = reader [ "Manu_No" ] is DBNull ? "" : reader . GetString ( "Manu_No" ) ;
nowChannels . Add ( stock ) ;
}
reader . Close ( ) ;
//// 保存数据 入库记录
int stockQuantity = nowChannels . Sum ( it = > it . Quantity ) ;
int manunoQuantity = nowChannels . FindAll ( it2 = > it2 . ManuNo = = it . ManuNo ) . Sum ( it = > it . Quantity ) ;
DateTime ? EFFDATE = ! String . IsNullOrEmpty ( it . EffDate ) ? DateTime . ParseExact ( it . EffDate , "yyyy-MM-dd" , System . Globalization . CultureInfo . CurrentCulture ) : null ;
string InvoiceId = PZH ;
int? operatorUser = HomeWindowViewModel . Operator ? . Id ;
int? reviewerUser = HomeWindowViewModel . Reviewer ? . Id ;
string insertSql = $"INSERT INTO dm_machine_record " +
$"SET MACHINE_ID='{it.MachineId}',drawer_no='{it.DrawerNo}',COL_NO='{it.ColNo}',DRUG_ID='{it.DrugId}',MANU_NO='{it.ManuNo}'," +
$"EFF_DATE='{EFFDATE}',Operator={operatorUser},reviewer={reviewerUser}," +
$"operation_time=NOW(),quantity={it.AddQuantity},type=1,invoice_id='{InvoiceId}',stock_quantity={stockQuantity}," +
$"manunoQuantity={manunoQuantity},supplierDept='{SupplierDept}',receiveDept='{ReceiveDept}'" ;
cmd . CommandText = insertSql ;
cmd . Parameters . Clear ( ) ;
cmd . ExecuteNonQuery ( ) ;
}
transaction . Commit ( ) ;
iRet = true ;
}
catch ( Exception ex )
{
transaction . Rollback ( ) ;
logger . Info ( $"SaveSelfTakeInfo Exception:{ex.Message}" ) ;
iRet = false ;
}
}
return iRet ;
}
/// <summary>
/// 调拨入库获取数据
/// </summary>
/// <returns></returns>
public List < Invoice > GetInvoiceInfo ( string OrderDate , string SearchValue , int PageNum , int PageSize , ref int totalCount )
{
List < Invoice > invoices = new List < Invoice > ( ) ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
MySqlCommand cmd = new MySqlCommand ( ) ;
cmd . Connection = con ;
totalCount = 0 ;
PageNum = ( PageNum - 1 ) * PageSize ;
string countSql = $ @ "SELECT Count(1) FROM (SELECT count(1) as Count, i.InvoiceNo, i.InvoiceDate, sum(i.quantity) as quantity, p1.pharmacy_name as PharmacyName1, p2.pharmacy_name PharmacyName2 from
2025-04-11 17:01:07 +08:00
( SELECT inOutI . drug_id , in_pharmacy_id , out_pharmacy_id , invoice_no as InvoiceNo , DATE_FORMAT ( Invoice_Date , ' % Y - % m - % d ' ) as InvoiceDate , SUM ( if ( inOutI . units = di . small_unit , quantity , quantity * convert_ratio ) ) as quantity
FROM in_out_invoice inOuti inner join drug_info di on inOutI . drug_id = di . Drug_ID where status = 0 and type ! = 2 and cancel_flag = 0 GROUP BY invoice_no , drug_id ) i
2024-07-06 10:01:30 +08:00
inner join ( select c . drug_id as drug_id from channel_list c where c . machine_id = ' { machine_id } ' group by c . drug_id ) di on di . drug_id = i . drug_id
left join pharmacy_info p1 on p1 . pharmacy_id = i . in_pharmacy_id
left join pharmacy_info p2 on p2 . pharmacy_id = i . out_pharmacy_id where 1 = 1 ";
if ( OrderDate ! = null )
{
countSql + = " and i.InvoiceDate = @CreateTime " ;
}
if ( ! String . IsNullOrEmpty ( SearchValue ) )
{
countSql + = " and i.InvoiceNo = @InvoiceNo " ;
}
if ( ! String . IsNullOrEmpty ( ConfigurationManager . AppSettings [ "storage" ] ) )
{
countSql + = " and i.in_pharmacy_id = @OutPharmacyId " ;
}
countSql + = $" GROUP BY i.InvoiceNo order by i.InvoiceDate) t " ;
MySqlParameter [ ] parameters =
{
new MySqlParameter ( "CreateTime" , OrderDate ) ,
new MySqlParameter ( "InvoiceNo" , SearchValue ) ,
new MySqlParameter ( "OutPharmacyId" , ConfigurationManager . AppSettings [ "storage" ] )
} ;
cmd . CommandText = countSql ;
cmd . Parameters . Clear ( ) ;
cmd . Parameters . AddRange ( parameters ) ;
//执行语句
totalCount = Convert . ToInt32 ( cmd . ExecuteScalar ( ) ) ;
var sb = new StringBuilder ( ) ;
sb . Append ( "SELECT Count,InvoiceNo,InvoiceDate,quantity,PharmacyName1,PharmacyName2 FROM (SELECT count(1) as Count, i.InvoiceNo, i.InvoiceDate, sum(i.quantity) as quantity, p1.pharmacy_name as PharmacyName1, p2.pharmacy_name PharmacyName2 from " ) ;
2025-04-11 17:01:07 +08:00
sb . Append ( " (SELECT inOutI.drug_id,in_pharmacy_id,out_pharmacy_id, invoice_no as InvoiceNo, DATE_FORMAT(Invoice_Date,'%Y-%m-%d') as InvoiceDate, SUM(if(inOutI.units=di.small_unit,quantity,quantity*convert_ratio)) as quantity " ) ;
sb . Append ( " FROM in_out_invoice inOuti inner join drug_info di on inOutI.drug_id=di.Drug_ID where status=0 and type!=2 and cancel_flag=0 GROUP BY invoice_no,drug_id) i " ) ;
2024-07-06 10:01:30 +08:00
sb . Append ( $" inner join ( select c.drug_id as drug_id from channel_list c where c.machine_id = '{machine_id}' group by c.drug_id ) di on di.drug_id = i.drug_id" ) ;
sb . Append ( " left join pharmacy_info p1 on p1.pharmacy_id = i.in_pharmacy_id" ) ;
sb . Append ( " left join pharmacy_info p2 on p2.pharmacy_id = i.out_pharmacy_id where 1=1" ) ;
if ( OrderDate ! = null )
{
sb . Append ( " and i.InvoiceDate = @CreateTime " ) ;
}
if ( ! String . IsNullOrEmpty ( SearchValue ) )
{
sb . Append ( " and i.InvoiceNo = @InvoiceNo " ) ;
}
if ( ! String . IsNullOrEmpty ( ConfigurationManager . AppSettings [ "storage" ] ) )
{
sb . Append ( " and i.in_pharmacy_id = @OutPharmacyId " ) ;
}
//sb.Append(" group by i.invoice_no");
sb . Append ( $" GROUP BY i.InvoiceNo order by i.InvoiceDate) t LIMIT {PageNum},{PageSize} " ) ;
cmd . CommandText = sb . ToString ( ) ;
MySqlParameter [ ] mySqlParameters =
{
new MySqlParameter ( "CreateTime" , OrderDate ) ,
new MySqlParameter ( "InvoiceNo" , SearchValue ) ,
new MySqlParameter ( "OutPharmacyId" , ConfigurationManager . AppSettings [ "storage" ] )
} ;
cmd . Parameters . Clear ( ) ;
cmd . Parameters . AddRange ( mySqlParameters ) ;
MySqlDataReader reader = cmd . ExecuteReader ( ) ;
while ( reader . Read ( ) )
{
Invoice invoice = new Invoice ( ) ;
invoice . InvoiceNo = reader [ "InvoiceNo" ] is DBNull ? "" : reader . GetString ( "InvoiceNo" ) ;
invoice . Count = reader [ "Count" ] is DBNull ? 0 : reader . GetInt32 ( "Count" ) ;
invoice . InvoiceDate = reader [ "InvoiceDate" ] is DBNull ? "" : reader . GetString ( "InvoiceDate" ) ;
invoice . PharmacyName1 = reader [ "PharmacyName1" ] is DBNull ? "" : reader . GetString ( "PharmacyName1" ) ;
invoice . PharmacyName2 = reader [ "PharmacyName2" ] is DBNull ? "" : reader . GetString ( "PharmacyName2" ) ;
invoice . Quantity = reader [ "quantity" ] is DBNull ? 0 : reader . GetInt32 ( "quantity" ) ;
invoices . Add ( invoice ) ;
}
reader . Close ( ) ;
}
catch ( Exception ex )
{
logger . Info ( $"获取调拨数据异常——{ex.Message}" ) ;
}
}
return invoices ;
}
/// <summary>
/// 调拨单——先查询有几种药
/// </summary>
/// <returns></returns>
public List < InOutInvoice > GetInvoiceByInvoiceNo ( string INVOICE_NO )
{
List < InOutInvoice > invoices = new List < InOutInvoice > ( ) ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
//先查询有几种药
string strSql = $ @ "SELECT sum(Quantity) AS SumQuantity, COUNT(ID) AS CountNum,INVOICE_NO AS InvoiceNo,drug_id AS DrugId,QUANTITY AS quantity,drug_manu_no AS drugManuNo
FROM IN_OUT_INVOICE WHERE INVOICE_NO = { INVOICE_NO } GROUP BY INVOICE_NO , DRUG_ID ";
MySqlCommand cmd = new MySqlCommand ( ) ;
cmd . Connection = con ;
cmd . CommandText = strSql ;
MySqlDataReader reader = cmd . ExecuteReader ( ) ;
while ( reader . Read ( ) )
{
InOutInvoice inOut = new InOutInvoice ( ) ;
inOut . DrugId = reader [ "DrugId" ] is DBNull ? "" : reader . GetString ( "DrugId" ) ;
inOut . InvoiceNo = reader [ "InvoiceNo" ] is DBNull ? "" : reader . GetString ( "InvoiceNo" ) ;
inOut . quantity = reader [ "quantity" ] is DBNull ? 0 : reader . GetInt32 ( "quantity" ) ;
invoices . Add ( inOut ) ;
}
reader . Close ( ) ;
}
catch ( Exception ex )
{
logger . Info ( $"根据调拨单{INVOICE_NO}获取数据异常——{ex.Message}" ) ;
}
}
return invoices ;
}
/// <summary>
/// 调拨入库获取药品绑定信息
/// </summary>
/// <returns></returns>
public List < ChannelList > GetChannelList ( string drugId )
{
List < ChannelList > channelLists = new List < ChannelList > ( ) ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
MySqlCommand cmd = new MySqlCommand ( ) ;
cmd . Connection = con ;
string sql = $ @ "SELECT cl.chnguid,cl.machine_id,cl.row_no,cl.col_no,cl.pos_no,cl.drug_id,cl.drawer_type,cl.board_type,cl.state,DR.drug_name,DR.drug_spec,DR.manufactory
FROM channel_list cl INNER JOIN drug_info DR ON cl . drug_id = DR . drug_id WHERE ( ( cl . drug_id = ' { drugId } ' ) AND ( cl . machine_id = ' { machine_id } ' ) ) ";
DataSet ds = new DataSet ( ) ;
MySqlDataAdapter sda = new MySqlDataAdapter ( sql , con ) ;
sda . Fill ( ds ) ;
if ( ds ! = null & & ds . Tables [ 0 ] ! = null & & ds . Tables [ 0 ] . Rows . Count > 0 )
{
for ( int i = 0 ; i < ds . Tables [ 0 ] . Rows . Count ; i + + )
{
ChannelList channelList = new ChannelList ( ) ;
DrugInfo DR = new DrugInfo ( ) ;
channelList . Id = ds . Tables [ 0 ] . Rows [ i ] [ "chnguid" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "chnguid" ] . ToString ( ) ;
channelList . MachineId = ds . Tables [ 0 ] . Rows [ i ] [ "machine_id" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "machine_id" ] . ToString ( ) ;
channelList . DrawerNo = ds . Tables [ 0 ] . Rows [ i ] [ "row_no" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "row_no" ] ) ;
channelList . ColNo = ds . Tables [ 0 ] . Rows [ i ] [ "col_no" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "col_no" ] ) ;
channelList . PosNo = ds . Tables [ 0 ] . Rows [ i ] [ "pos_no" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "pos_no" ] ) ;
channelList . DrugId = ds . Tables [ 0 ] . Rows [ i ] [ "drug_id" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "drug_id" ] . ToString ( ) ;
channelList . DrawerType = ds . Tables [ 0 ] . Rows [ i ] [ "drawer_type" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "drawer_type" ] ) ;
channelList . BoardType = ds . Tables [ 0 ] . Rows [ i ] [ "board_type" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "board_type" ] ) ;
channelList . State = ds . Tables [ 0 ] . Rows [ i ] [ "state" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "state" ] ) ;
DR . DrugId = ds . Tables [ 0 ] . Rows [ i ] [ "drug_id" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "drug_id" ] . ToString ( ) ;
DR . DrugName = ds . Tables [ 0 ] . Rows [ i ] [ "drug_name" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "drug_name" ] . ToString ( ) ;
DR . DrugSpec = ds . Tables [ 0 ] . Rows [ i ] [ "drug_spec" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "drug_spec" ] . ToString ( ) ;
DR . Manufactory = ds . Tables [ 0 ] . Rows [ i ] [ "manufactory" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "manufactory" ] . ToString ( ) ;
channelList . Drug = DR ;
List < DrugManuNo > drugManuNos = new List < DrugManuNo > ( ) ;
//string querySql = $@"SELECT dmnguid,drug_id,manu_no,manu_date,eff_date from drug_manu_no WHERE DRUG_ID='{DR.DrugId}'";
//cmd.CommandText = querySql;
//MySqlDataReader reader = cmd.ExecuteReader();
//while (reader.Read())
//{
// DrugManuNo drugManuNo = new DrugManuNo();
// drugManuNo.Id = reader["dmnguid"] is DBNull ? "" : reader.GetString("dmnguid");
// drugManuNo.DrugId = reader["drug_id"] is DBNull ? "" : reader.GetString("drug_id");
// drugManuNo.ManuNo = reader["manu_no"] is DBNull ? "" : reader.GetString("manu_no");
// drugManuNo.EffDate = reader["eff_date"] is DBNull ? "" : reader.GetString("eff_date");
// drugManuNos.Add(drugManuNo);
//}
//reader.Close();
DR . DrugManuNos = drugManuNos ;
channelLists . Add ( channelList ) ;
}
}
}
catch ( Exception ex )
{
logger . Info ( $"GetChannelList异常——{ex.Message}" ) ;
}
}
return channelLists ;
}
/// <summary>
/// 调拨入库 查询每种药有多少个批次
/// </summary>
/// <returns></returns>
public List < InOutInvoice > GetInvoiceManu ( string invoiceNo , string drugId )
{
List < InOutInvoice > inOutInvoices = new List < InOutInvoice > ( ) ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
2025-04-11 17:01:07 +08:00
string sql = $ @ "SELECT inOutI.id,inOutI.in_pharmacy_id,inOutI.out_pharmacy_id,inOutI.storage,inOutI.invoice_no,inOutI.invoice_date,inOutI.drug_id,inOutI.drug_spec,
if ( inOuti . units = di . small_unit , quantity , quantity * convert_ratio ) as quantity , inOutI . drug_manu_no , inOutI . supplier , inOutI . operator , inOutI . drug_eff_date
FROM in_out_invoice inOutI inner join drug_info di on inOutI . drug_id = di . Drug_ID WHERE ( ( ( ( ( inOutI . invoice_no = ' { invoiceNo } ' )
AND ( inOutI . drug_id = ' { drugId } ' ) ) AND ( inOutI . status = 0 ) ) AND ( inOutI . type < > 2 ) ) AND ( inOutI . cancel_flag = 0 ) ) ";
2024-07-06 10:01:30 +08:00
DataSet ds = new DataSet ( ) ;
MySqlDataAdapter sda = new MySqlDataAdapter ( sql , con ) ;
sda . Fill ( ds ) ;
if ( ds ! = null & & ds . Tables [ 0 ] . Rows . Count > 0 )
{
for ( int i = 0 ; i < ds . Tables [ 0 ] . Rows . Count ; i + + )
{
InOutInvoice inOut = new InOutInvoice ( ) ;
inOut . Id = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "id" ] ) ;
inOut . InPharmacyId = ds . Tables [ 0 ] . Rows [ i ] [ "in_pharmacy_id" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "in_pharmacy_id" ] . ToString ( ) ;
inOut . OutPharmacyId = ds . Tables [ 0 ] . Rows [ i ] [ "out_pharmacy_id" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "out_pharmacy_id" ] . ToString ( ) ;
inOut . storage = ds . Tables [ 0 ] . Rows [ i ] [ "storage" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "storage" ] . ToString ( ) ;
inOut . InvoiceNo = ds . Tables [ 0 ] . Rows [ i ] [ "invoice_no" ] . ToString ( ) ;
inOut . InvoiceDate = ds . Tables [ 0 ] . Rows [ i ] [ "invoice_date" ] . ToString ( ) ;
inOut . DrugId = ds . Tables [ 0 ] . Rows [ i ] [ "drug_id" ] . ToString ( ) ;
inOut . DrugSpec = ds . Tables [ 0 ] . Rows [ i ] [ "drug_spec" ] . ToString ( ) ;
inOut . DrugManuNo = ds . Tables [ 0 ] . Rows [ i ] [ "drug_manu_no" ] . ToString ( ) ;
inOut . Supplier = ds . Tables [ 0 ] . Rows [ i ] [ "supplier" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "supplier" ] . ToString ( ) ;
inOut . Operator = ds . Tables [ 0 ] . Rows [ i ] [ "operator" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "operator" ] . ToString ( ) ;
inOut . DrugEffDate = ds . Tables [ 0 ] . Rows [ i ] [ "drug_eff_date" ] . ToString ( ) ;
inOut . quantity = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "quantity" ] ) ;
inOutInvoices . Add ( inOut ) ;
}
}
}
catch ( Exception ex )
{
logger . Info ( $"GetInvoiceManu异常——{ex.Message}" ) ;
}
}
return inOutInvoices ;
}
/// <summary>
///调拨入库 查询是否有库存
/// </summary>
/// <param name="drugId"></param>
/// <param name="manuNo"></param>
/// <returns></returns>
public List < ChannelStock > GetInvoiceStock ( string drugId , string manuNo )
{
List < ChannelStock > channelStocks = new List < ChannelStock > ( ) ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
string strSql = $@"SELECT chsguid as id,chnguid,machine_id,row_no,board_type,drawer_type,col_no,drug_id,Manu_No,eff_date,Quantity FROM channel_stock where drug_id='{drugId}' and Manu_No='{manuNo}'" ;
DataSet ds = new DataSet ( ) ;
MySqlDataAdapter sqlDataAdapter = new MySqlDataAdapter ( strSql , con ) ;
sqlDataAdapter . Fill ( ds ) ;
if ( ds ! = null & & ds . Tables [ 0 ] ! = null & & ds . Tables [ 0 ] . Rows . Count > 0 )
{
for ( int i = 0 ; i < ds . Tables [ 0 ] . Rows . Count ; i + + )
{
ChannelStock stock = new ChannelStock ( ) ;
stock . Id = ds . Tables [ 0 ] . Rows [ i ] [ "id" ] . ToString ( ) ;
stock . MachineId = ds . Tables [ 0 ] . Rows [ i ] [ "machine_id" ] . ToString ( ) ;
stock . DrawerNo = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "row_no" ] ) ;
stock . BoardType = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "board_type" ] ) ;
stock . DrawerType = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "drawer_type" ] ) ;
stock . ColNo = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "col_no" ] ) ;
stock . DrugId = ds . Tables [ 0 ] . Rows [ i ] [ "drug_id" ] . ToString ( ) ;
stock . ManuNo = ds . Tables [ 0 ] . Rows [ i ] [ "Manu_No" ] . ToString ( ) ;
stock . EffDate = ds . Tables [ 0 ] . Rows [ i ] [ "eff_date" ] . ToString ( ) ;
stock . Chnguid = ds . Tables [ 0 ] . Rows [ i ] [ "chnguid" ] . ToString ( ) ;
stock . Quantity = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "Quantity" ] ) ;
channelStocks . Add ( stock ) ;
}
}
}
catch ( Exception ex )
{
throw ;
}
}
return channelStocks ;
}
/// <summary>
///根据药品id及批次获取效期
/// </summary>
/// <param name="drugId"></param>
/// <param name="manaNo"></param>
/// <returns></returns>
public DrugManuNo GetManuNoList ( string drugId , string manaNo )
{
DrugManuNo drugManuNo = null ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
string strSql = $@"SELECT dmnguid,drug_id,Manu_No,eff_date from drug_manu_no WHERE drug_id='{drugId}' and manu_no='{manaNo}'" ;
MySqlCommand cmd = new MySqlCommand ( ) ;
cmd . Connection = con ;
cmd . CommandText = strSql ;
MySqlDataReader reader = cmd . ExecuteReader ( ) ;
while ( reader . Read ( ) )
{
drugManuNo = new DrugManuNo ( ) ;
drugManuNo . Id = reader [ "dmnguid" ] is DBNull ? "" : reader . GetString ( "dmnguid" ) ;
drugManuNo . DrugId = reader [ "drug_id" ] is DBNull ? "" : reader . GetString ( "drug_id" ) ;
drugManuNo . ManuNo = reader [ "Manu_No" ] is DBNull ? "" : reader . GetString ( "Manu_No" ) ;
drugManuNo . EffDate = reader [ "eff_date" ] is DBNull ? "" : reader . GetString ( "eff_date" ) ;
}
reader . Close ( ) ;
}
catch ( Exception ex )
{
logger . Info ( $"根据药品id{drugId}及批次{manaNo}获取效期异常——{ex.Message}" ) ;
}
}
return drugManuNo ;
}
/// <summary>
/// 保存——调拨入库
/// </summary>
/// <returns></returns>
public bool SaveInvoiceIn ( List < ChannelStock > record , Invoice ? SelectedInvoice )
{
bool bResult = false ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
MySqlTransaction transaction = con . BeginTransaction ( ) ;
try
{
2025-04-11 17:01:07 +08:00
logger . Info ( "保存——调拨入库" ) ;
2024-07-06 10:01:30 +08:00
string InvoiceNo = SelectedInvoice . InvoiceNo ;
string strSql = $@"UPDATE in_out_invoice SET STATUS=1 WHERE invoice_no='{InvoiceNo}'" ;
MySqlCommand cmd = new MySqlCommand ( ) ;
cmd . Connection = con ;
cmd . CommandText = strSql ;
cmd . Transaction = transaction ;
int iResult = cmd . ExecuteNonQuery ( ) ;
for ( int i = 0 ; i < record . Count ; i + + )
{
ChannelStock it = record [ i ] ;
int Quantity = it . Quantity + it . AddQuantity ;
if ( it . Id ! = null )
{
string updateSql = @ $"UPDATE channel_stock SET Quantity='{Quantity}',Manu_No='{it.ManuNo}',eff_date='{it.EffDate}' WHERE chsguid='{it.Id}'" ;
cmd . CommandText = updateSql ;
iResult = cmd . ExecuteNonQuery ( ) ; ;
if ( iResult < = 0 )
{
logger . Info ( $"channel_stock未更新数据{updateSql}" ) ;
}
2025-04-11 17:01:07 +08:00
else
{
logger . Info ( $"channel_stock更新数据{updateSql}" ) ;
}
2024-07-06 10:01:30 +08:00
}
else
{
//如果批号重复则不让添加
string checkRepeatSql = $@"SELECT COUNT(1) FROM CHANNEL_STOCK WHERE ROW_NO='{it.DrawerNo}' AND COL_NO='{it.ColNo}' AND MANU_NO='{it.ManuNo}' AND MACHINE_ID ='{machine_id}'" ;
cmd . CommandText = checkRepeatSql ;
iResult = Convert . ToInt32 ( cmd . ExecuteScalar ( ) ) ;
if ( iResult > 0 )
{
logger . Info ( $"批号重复:{it.DrawerNo}-{it.ColNo}-{it.ManuNo}" ) ;
continue ;
}
//查询现有库位中是否有库存为0的记录,如果有直接update
string querySql = $@"SELECT chsguid FROM CHANNEL_STOCK WHERE ROW_NO='{it.DrawerNo}' AND COL_NO='{it.ColNo}' AND MANU_NO='{it.ManuNo}' AND MACHINE_ID ='{machine_id}' AND QUANTITY<=0 LIMIT 1" ;
cmd . CommandText = querySql ;
string id = Convert . ToString ( cmd . ExecuteScalar ( ) ) ;
if ( ! string . IsNullOrEmpty ( id ) )
{
string uSql = $@"UPDATE CHANNEL_STOCK SET QUANTITY='{Quantity}',MANU_NO='{it.ManuNo}',EFF_DATE='{it.EffDate}' WHERE chsguid='{id}'" ;
cmd . CommandText = uSql ;
iResult = cmd . ExecuteNonQuery ( ) ;
if ( iResult < = 0 )
{
logger . Info ( $"SaveInvoiceIn未更新数据{uSql}" ) ;
}
2025-04-11 17:01:07 +08:00
else
{
logger . Info ( $"SaveInvoiceIn更新数据{uSql}" ) ;
}
2024-07-06 10:01:30 +08:00
}
else
{
// 更新数据 库存信息
string insertSql = $ @ "INSERT INTO CHANNEL_STOCK(chsguid,ChnGuid, Quantity,Manu_No,eff_date,drawer_type,Row_no,Col_no,Drug_ID,board_type,Machine_id)
VALUES ( ' { Guid . NewGuid ( ) . ToString ( ) } ',' { it . Chnguid } ',' { it . AddQuantity } ',' { it . ManuNo } ' ,
' { it . EffDate } ',' { it . DrawerType } ',' { it . DrawerNo } ',' { it . ColNo } ',' { it . DrugId } ',' { it . BoardType } ',' { machine_id } ' ) ";
cmd . CommandText = insertSql ;
iResult = cmd . ExecuteNonQuery ( ) ;
if ( iResult < = 0 )
{
logger . Info ( $"SaveInvoiceIn未新增数据——{insertSql}" ) ;
}
2025-04-11 17:01:07 +08:00
else
{
logger . Info ( $"SaveInvoiceIn新增数据——{insertSql}" ) ;
}
2024-07-06 10:01:30 +08:00
}
}
// 获取更新完库存后的药品库存
List < ChannelStock > nowChannels = new List < ChannelStock > ( ) ;
string getStockSql = $@"SELECT Quantity,Manu_No FROM CHANNEL_STOCK WHERE MACHINE_ID='{machine_id}' AND DRUG_ID='{it.DrugId}' AND drawer_type=1" ;
cmd . CommandText = getStockSql ;
MySqlDataReader reader = cmd . ExecuteReader ( ) ;
while ( reader . Read ( ) )
{
ChannelStock stock = new ChannelStock ( ) ;
stock . Quantity = reader [ "Quantity" ] is DBNull ? 0 : reader . GetInt32 ( "Quantity" ) ;
stock . ManuNo = reader [ "Manu_No" ] is DBNull ? "" : reader . GetString ( "Manu_No" ) ;
nowChannels . Add ( stock ) ;
}
reader . Close ( ) ;
//DateTime? EffDate = !String.IsNullOrEmpty(it.EffDate) ? DateTime.ParseExact(it.EffDate, "yyyy-MM-dd", System.Globalization.CultureInfo.CurrentCulture) : null;
int? Operator = HomeWindowViewModel . Operator ? . Id ;
int? Reviewer = HomeWindowViewModel . Reviewer ? . Id ;
int StockQuantity = nowChannels . Sum ( it = > it . Quantity ) ;
int ManunoQuantity = nowChannels . FindAll ( it2 = > it2 . ManuNo = = it . ManuNo ) . Sum ( it = > it . Quantity ) ;
string SupplierDept = SelectedInvoice . PharmacyName1 ? ? ConfigurationManager . AppSettings [ "supplierDept" ] . ToString ( ) ;
string ReceiveDept = SelectedInvoice . PharmacyName2 ? ? ConfigurationManager . AppSettings [ "receiveDept" ] . ToString ( ) ;
string iSql = $ @ "INSERT INTO dm_machine_record
( Machine_id , drawer_no , Col_no , Drug_ID , Manu_No , eff_date , Operator , reviewer , operation_time , Quantity , type , invoice_id , stock_quantity , manunoQuantity , supplierDept , receiveDept )
values ( ' { machine_id } ',' { it . DrawerNo } ',' { it . ColNo } ',' { it . DrugId } ',' { it . ManuNo } ',' { it . EffDate } ' , { Operator } , { Reviewer } , ' { DateTime . Now } ' , { it . AddQuantity } , 1 , ' { InvoiceNo } ' ,
' { StockQuantity } ',' { ManunoQuantity } ',' { SupplierDept } ',' { ReceiveDept } ' ) ";
cmd . CommandText = iSql ;
iResult = cmd . ExecuteNonQuery ( ) ;
if ( iResult < = 0 )
{
logger . Info ( $"SaveInvoiceIn-dm_machine_record未新增数据——{iSql}" ) ;
}
2025-04-11 17:01:07 +08:00
else
2024-07-06 10:01:30 +08:00
{
2025-04-11 17:01:07 +08:00
logger . Info ( $"SaveInvoiceIn-dm_machine_record新增数据——{iSql}" ) ;
2024-07-06 10:01:30 +08:00
}
}
bResult = true ;
transaction . Commit ( ) ;
2025-04-11 17:01:07 +08:00
//根据ChannelLsts中的库位, 删除该库位库存为0的记录
string delSql = $@"DELETE FROM channel_stock WHERE MACHINE_ID='{machine_id}' AND QUANTITY<=0" ;
cmd . CommandText = delSql ;
iResult = cmd . ExecuteNonQuery ( ) ;
if ( iResult < = 0 )
{
logger . Info ( $"SaveInvoiceIn-删除未执行任何数据——{delSql}" ) ;
}
else
{
logger . Info ( $"SaveInvoiceIn-删除执行sql——{delSql}" ) ;
}
2024-07-06 10:01:30 +08:00
}
catch ( Exception ex )
{
logger . Info ( $"SaveInvoiceIn异常——{ex.Message}" ) ;
transaction . Rollback ( ) ;
bResult = false ;
}
}
return bResult ;
}
/// <summary>
/// 根据抽屉号、库位号查询库存信息
/// </summary>
/// <param name="rowNo"></param>
/// <param name="colNo"></param>
/// <returns></returns>
public List < ChannelStock > GetChannelStockListForInvoice ( int rowNo , int colNo )
{
List < ChannelStock > channel = new List < ChannelStock > ( ) ;
//SqlSugarHelper.Db.Queryable<ChannelStock>()
// .Where(cs => cs.MachineId == singleChannels[i].MachineId)
// .Where(cs => cs.DrawerNo == singleChannels[i].DrawerNo)
// .Where(cs => cs.ColNo == singleChannels[i].ColNo)
// //.Where(cs=>cs.Quantity>0)
// .OrderBy(cs => cs.EffDate)
// .ToList();
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
string sql = $"SELECT ROW_NO,COL_NO,eff_date,quantity,manu_no FROM CHANNEL_STOCK WHERE MACHINE_ID='{machine_id}' AND ROW_NO={rowNo} AND COL_NO={colNo} AND QUANTITY>0 ORDER BY EFF_DATE" ;
MySqlCommand cmd = new MySqlCommand ( sql , con ) ;
MySqlDataReader reader = cmd . ExecuteReader ( ) ;
while ( reader . Read ( ) )
{
ChannelStock cs = new ChannelStock ( ) ;
cs . DrawerNo = reader [ "row_no" ] is DBNull ? 0 : reader . GetInt32 ( "row_no" ) ;
cs . ColNo = reader [ "col_no" ] is DBNull ? 0 : reader . GetInt32 ( "col_no" ) ;
cs . EffDate = reader [ "eff_date" ] is DBNull ? "" : reader . GetString ( "eff_date" ) ;
cs . Quantity = reader [ "quantity" ] is DBNull ? 0 : reader . GetInt32 ( "quantity" ) ;
cs . ManuNo = reader [ "manu_no" ] is DBNull ? "" : reader . GetString ( "manu_no" ) ;
channel . Add ( cs ) ;
}
reader . Close ( ) ;
}
return channel ;
}
///多批次抽屉加药
public List < ChannelList > GetAddDrugInfo ( int rowNo )
{
List < ChannelList > ? ChannelLsts = new List < ChannelList > ( ) ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
string strSql = $ @ "SELECT CL.chnguid,CL.machine_id,CL.row_no,CL.col_no,CL.pos_no,CL.drug_id,CL.drawer_type,CL.board_type,CL.state,DI.drug_name,DI.drug_spec,DI.manufactory
FROM channel_list CL INNER JOIN drug_info DI ON CL . DRUG_ID = DI . DRUG_ID
WHERE ( CL . row_no = { rowNo } ) AND ( CL . drawer_type = 1 ) AND ( CL . machine_id = ' { machine_id } ' )
AND ( CL . drug_id IS NOT NULL ) ORDER BY CL . col_no ASC ";
List < DrugManuNo > drugManuNos = new List < DrugManuNo > ( ) ;
MySqlDataAdapter mySqlDataAdapter = new MySqlDataAdapter ( strSql , con ) ;
DataSet ds = new DataSet ( ) ;
mySqlDataAdapter . Fill ( ds ) ;
if ( ds ! = null & & ds . Tables [ 0 ] . Rows . Count > 0 )
{
for ( int i = 0 ; i < ds . Tables [ 0 ] . Rows . Count ; i + + )
{
List < ChannelStock > channelStocks = new List < ChannelStock > ( ) ;
ChannelList channelList = new ChannelList ( ) ;
DrugInfo di = new DrugInfo ( ) ;
channelList . Id = ds . Tables [ 0 ] . Rows [ i ] [ "chnguid" ] . ToString ( ) ;
channelList . MachineId = ds . Tables [ 0 ] . Rows [ i ] [ "machine_id" ] . ToString ( ) ;
channelList . DrawerNo = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "row_no" ] ) ;
channelList . ColNo = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "col_no" ] ) ;
channelList . PosNo = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "pos_no" ] ) ;
channelList . DrugId = ds . Tables [ 0 ] . Rows [ i ] [ "drug_id" ] . ToString ( ) ;
channelList . DrawerType = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "drawer_type" ] ) ;
channelList . BoardType = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "board_type" ] ) ;
channelList . State = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "State" ] ) ;
di . DrugName = ds . Tables [ 0 ] . Rows [ i ] [ "drug_name" ] . ToString ( ) ;
di . DrugSpec = ds . Tables [ 0 ] . Rows [ i ] [ "drug_spec" ] . ToString ( ) ;
di . Manufactory = ds . Tables [ 0 ] . Rows [ i ] [ "manufactory" ] . ToString ( ) ;
di . DrugId = ds . Tables [ 0 ] . Rows [ i ] [ "drug_id" ] . ToString ( ) ;
channelList . Drug = di ;
string channelStoclSql = $ @ "SELECT CS.chsguid AS Id,CS.chnguid AS Chnguid,CS.machine_id AS MachineId,CS.row_no AS DrawerNo,CS.col_no AS ColNo,CS.pos_no AS PosNo,
CS . drug_id AS DrugId , CS . manu_no AS ManuNo , CS . eff_date AS EffDate , CS . quantity AS Quantity , CS . drawer_type AS DrawerType , CS . board_type AS BoardType ,
CS . state AS State , DI . drug_id AS DIDRUGID , DI . drug_name AS DRUGNAME , DI . drug_spec AS DRUGSPEC , DI . dose AS DOSE , DI . manufactory AS manufactory
from channel_stock as CS INNER JOIN drug_info DI ON CS . drug_id = DI . drug_id WHERE CS . chnguid = ' { channelList . Id } ' ";
mySqlDataAdapter = new MySqlDataAdapter ( channelStoclSql , con ) ;
DataSet stockDS = new DataSet ( ) ;
mySqlDataAdapter . Fill ( stockDS ) ;
if ( stockDS ! = null & & stockDS . Tables [ 0 ] . Rows . Count > 0 )
{
ChannelStock stock = null ;
for ( int j = 0 ; j < stockDS . Tables [ 0 ] . Rows . Count ; j + + )
{
stock = new ChannelStock ( ) ;
DrugInfo drug = new DrugInfo ( ) ;
DrugManuNo drugManuNo = new DrugManuNo ( ) ;
List < DrugManuNo > listDrugmanuno = new List < DrugManuNo > ( ) ;
stock . Id = stockDS . Tables [ 0 ] . Rows [ j ] [ "Id" ] . ToString ( ) ;
stock . Chnguid = stockDS . Tables [ 0 ] . Rows [ j ] [ "Chnguid" ] . ToString ( ) ;
stock . MachineId = stockDS . Tables [ 0 ] . Rows [ j ] [ "MachineId" ] . ToString ( ) ;
stock . DrawerNo = Convert . ToInt32 ( stockDS . Tables [ 0 ] . Rows [ j ] [ "DrawerNo" ] ) ;
stock . ColNo = Convert . ToInt32 ( stockDS . Tables [ 0 ] . Rows [ j ] [ "ColNo" ] ) ;
stock . PosNo = stockDS . Tables [ 0 ] . Rows [ j ] [ "PosNo" ] is DBNull ? - 1 : Convert . ToInt32 ( stockDS . Tables [ 0 ] . Rows [ j ] [ "PosNo" ] ) ;
stock . DrugId = stockDS . Tables [ 0 ] . Rows [ j ] [ "DrugId" ] . ToString ( ) ;
stock . ManuNo = stockDS . Tables [ 0 ] . Rows [ j ] [ "ManuNo" ] . ToString ( ) ;
stock . EffDate = stockDS . Tables [ 0 ] . Rows [ j ] [ "EffDate" ] . ToString ( ) ;
stock . Quantity = Convert . ToInt32 ( stockDS . Tables [ 0 ] . Rows [ j ] [ "Quantity" ] ) ;
stock . DrawerType = Convert . ToInt32 ( stockDS . Tables [ 0 ] . Rows [ j ] [ "DrawerType" ] ) ;
stock . BoardType = Convert . ToInt32 ( stockDS . Tables [ 0 ] . Rows [ j ] [ "BoardType" ] ) ;
stock . State = Convert . ToInt32 ( stockDS . Tables [ 0 ] . Rows [ j ] [ "State" ] is DBNull ? 0 : stockDS . Tables [ 0 ] . Rows [ j ] [ "State" ] ) ;
stock . ChannelLst = channelList ;
drug . DrugId = stockDS . Tables [ 0 ] . Rows [ j ] [ "DrugId" ] . ToString ( ) ;
drug . DrugName = stockDS . Tables [ 0 ] . Rows [ j ] [ "DRUGNAME" ] . ToString ( ) ;
drug . DrugSpec = stockDS . Tables [ 0 ] . Rows [ j ] [ "DRUGSPEC" ] . ToString ( ) ;
drug . Dosage = stockDS . Tables [ 0 ] . Rows [ j ] [ "DOSE" ] . ToString ( ) ;
drug . Manufactory = stockDS . Tables [ 0 ] . Rows [ j ] [ "manufactory" ] . ToString ( ) ;
string manuSql = $@"SELECT dmnguid AS Id,drug_id AS DrugId,manu_no AS ManuNo,manu_date AS ManuDate,eff_date AS EffDate FROM drug_manu_no WHERE drug_id = '{stockDS.Tables[0].Rows[j][" DrugId "].ToString()}'" ;
mySqlDataAdapter = new MySqlDataAdapter ( manuSql , con ) ;
DataSet manuDS = new DataSet ( ) ;
mySqlDataAdapter . Fill ( manuDS ) ;
if ( manuDS ! = null & & manuDS . Tables [ 0 ] . Rows . Count > 0 )
{
for ( int k = 0 ; k < manuDS . Tables [ 0 ] . Rows . Count ; k + + )
{
DrugManuNo drugManu = new DrugManuNo ( ) ;
drugManu . Id = manuDS . Tables [ 0 ] . Rows [ k ] [ "Id" ] . ToString ( ) ;
drugManu . DrugId = manuDS . Tables [ 0 ] . Rows [ k ] [ "DrugId" ] . ToString ( ) ;
drugManu . ManuNo = manuDS . Tables [ 0 ] . Rows [ k ] [ "ManuNo" ] . ToString ( ) ;
drugManu . EffDate = manuDS . Tables [ 0 ] . Rows [ k ] [ "EffDate" ] . ToString ( ) ;
listDrugmanuno . Add ( drugManu ) ;
}
}
drug . DrugManuNos = listDrugmanuno ;
stock . DrugInfo = drug ;
drugManuNo . EffDate = stockDS . Tables [ 0 ] . Rows [ j ] [ "EffDate" ] . ToString ( ) ;
stock . drugManuNo = drugManuNo ;
channelStocks . Add ( stock ) ;
}
channelList . Drug = stock = = null ? null : stock . DrugInfo ;
//channelList.drugManuNo = channelStocks == null ? null : channelStocks[0].drugManuNo;
channelList . channelStocks = channelStocks ;
}
else
{
ChannelStock CS = new ChannelStock ( ) ;
CS . DrugId = ds . Tables [ 0 ] . Rows [ i ] [ "drug_id" ] . ToString ( ) ;
CS . DrawerNo = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "row_no" ] ) ;
CS . ColNo = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "col_no" ] ) ;
CS . DrugInfo = di ;
CS . ChannelLst = channelList ;
CS . DrawerType = channelList . DrawerType ;
CS . BoardType = channelList . BoardType ;
if ( channelList . channelStocks = = null )
{
channelList . channelStocks = new List < ChannelStock > ( ) ;
channelList . channelStocks . Add ( CS ) ;
}
else
{
channelList . channelStocks . Add ( CS ) ;
}
//绑定了药品channel_list但是没有绑批次channel_stock
string searchSql = $@"SELECT dmnguid AS Id,drug_id AS DrugId,manu_no AS ManuNo,manu_date AS ManuDate,eff_date AS EffDate FROM drug_manu_no where drug_id='{ds.Tables[0].Rows[i][" drug_id "].ToString()}'" ;
mySqlDataAdapter = new MySqlDataAdapter ( searchSql , con ) ;
DataSet searchStockDS = new DataSet ( ) ;
mySqlDataAdapter . Fill ( searchStockDS ) ;
List < DrugManuNo > listDrugmanuno = new List < DrugManuNo > ( ) ;
if ( searchStockDS ! = null & & searchStockDS . Tables [ 0 ] . Rows . Count > 0 )
{
for ( int m = 0 ; m < searchStockDS . Tables [ 0 ] . Rows . Count ; m + + )
{
DrugManuNo drugManu = new DrugManuNo ( ) ;
drugManu . Id = searchStockDS . Tables [ 0 ] . Rows [ m ] [ "Id" ] . ToString ( ) ;
drugManu . DrugId = searchStockDS . Tables [ 0 ] . Rows [ m ] [ "DrugId" ] . ToString ( ) ;
drugManu . ManuNo = searchStockDS . Tables [ 0 ] . Rows [ m ] [ "ManuNo" ] . ToString ( ) ;
drugManu . EffDate = searchStockDS . Tables [ 0 ] . Rows [ m ] [ "EffDate" ] . ToString ( ) ;
listDrugmanuno . Add ( drugManu ) ;
}
}
di . DrugManuNos = listDrugmanuno ;
CS . drugManuNo = listDrugmanuno [ 0 ] ;
channelList . drugManuNo = listDrugmanuno [ 0 ] ;
}
ChannelLsts . Add ( channelList ) ;
}
}
}
catch ( Exception ex )
{
throw ;
}
}
return ChannelLsts ;
}
//多批次抽屉加药保存
public List < ChannelStock > AddDrugSave ( List < ChannelStock > record , string PZH , ref bool flag )
{
List < ChannelStock > stockRepeats = new List < ChannelStock > ( ) ;
flag = false ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
MySqlCommand cmd = new MySqlCommand ( ) ;
cmd . Connection = con ;
int iResult = 0 ;
for ( int i = 0 ; i < record . Count ; i + + )
{
ChannelStock it = record [ i ] ;
it . ManuNo = it . drugManuNo . ManuNo ;
it . EffDate = it . drugManuNo . EffDate ;
if ( it . Id ! = null )
{
string updateSql = $@"UPDATE channel_stock SET QUANTITY={it.Quantity + it.AddQuantity},manu_no='{it.ManuNo}',eff_date='{it.EffDate}',drug_id='{it.DrugId}' WHERE chsguid='{it.Id}'" ;
cmd . CommandText = updateSql ;
iResult = cmd . ExecuteNonQuery ( ) ;
}
else
{
//如果批号重复则不让添加
string searchSql = $@"Select count(1) from channel_stock where row_no={it.DrawerType} and manu_no='{it.ManuNo}' and machine_id='{machine_id}'" ;
cmd . CommandText = searchSql ;
iResult = Convert . ToInt32 ( cmd . ExecuteScalar ( ) ) ;
if ( iResult > 0 )
{
stockRepeats . Add ( it ) ;
logger . Info ( $"批号重复不让添加{it.DrawerType}-{it.ManuNo}-{machine_id}" ) ;
continue ;
}
2025-04-11 17:01:07 +08:00
string chnguid = it . Chnguid = = null ? it . ChannelLst . Id : it . Chnguid ;
2024-07-06 10:01:30 +08:00
//更新数据 库存信息
string insertSql = $ @ "INSERT INTO channel_stock(QUANTITY,CHNGUID,MANU_NO,EFF_DATE,ROW_NO,COL_NO,DRUG_ID,DRAWER_TYPE,BOARD_TYPE,CHSGUID,MACHINE_ID)
VALUES ( { it . AddQuantity } , ' { chnguid } ',' { it . ManuNo } ',' { it . EffDate } ' , { it . DrawerNo } , { it . ColNo } , ' { it . DrugId } ',' { it . DrawerType } ',' { it . BoardType } ',' { Guid . NewGuid ( ) . ToString ( ) } ',' { machine_id } ' ) ";
cmd . CommandText = insertSql ;
iResult = cmd . ExecuteNonQuery ( ) ;
}
// 获取更新完库存后的药品库存
string newStockSql = $@"SELECT QUANTITY,MANU_NO FROM CHANNEL_STOCK WHERE MACHINE_ID='{machine_id}' AND DRUG_ID='{it.DrugId}' AND DRAWER_TYPE=1" ;
List < ChannelStock > nowChannels = new List < ChannelStock > ( ) ;
MySqlDataAdapter sda = new MySqlDataAdapter ( newStockSql , con ) ;
DataSet ds = new DataSet ( ) ;
sda . Fill ( ds ) ;
if ( ds ! = null & & ds . Tables [ 0 ] ! = null )
{
for ( int k = 0 ; k < ds . Tables [ 0 ] . Rows . Count ; k + + )
{
ChannelStock cs = new ChannelStock ( ) ;
cs . Quantity = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ k ] [ "QUANTITY" ] ) ;
cs . ManuNo = ds . Tables [ 0 ] . Rows [ k ] [ "MANU_NO" ] . ToString ( ) ;
nowChannels . Add ( cs ) ;
}
}
//DateTime? effDate = !String.IsNullOrEmpty(it.EffDate) ? DateTime.ParseExact(it.EffDate, "yyyy-MM-dd", System.Globalization.CultureInfo.CurrentCulture) : null;
DateTime ? effDate = ! String . IsNullOrEmpty ( it . EffDate ) ? Convert . ToDateTime ( it . EffDate ) : null ;
int? Operator = HomeWindowViewModel . Operator ? . Id ;
int? Reviewer = HomeWindowViewModel . Reviewer ? . Id ;
int StockQuantity = nowChannels . Sum ( it = > it . Quantity ) ;
int ManunoQuantity = nowChannels . FindAll ( it2 = > it2 . ManuNo = = it . ManuNo ) . Sum ( it = > it . Quantity ) ;
// 保存数据 入库记录
string insertRecordSql = $ @ "INSERT INTO dm_machine_record(MACHINE_ID,DRAWER_NO,COL_NO,DRUG_ID,MANU_NO,EFF_DATE,operator,reviewer,operation_time,quantity,TYPE,invoice_id,stock_quantity,manunoQuantity)
VALUES ( ' { machine_id } ' , { it . DrawerNo } , { it . ColNo } , ' { it . DrugId } ',' { it . ManuNo } ' ,
' { effDate } ',' { Operator } ',' { Reviewer } ',' { DateTime . Now } ' , { it . AddQuantity } , 1 , ' { PZH } ' , { StockQuantity } , { ManunoQuantity } ) ";
cmd . CommandText = insertRecordSql ;
iResult = cmd . ExecuteNonQuery ( ) ;
flag = true ;
}
}
catch ( Exception ex )
{
logger . Info ( $"多批次抽屉加药保存异常:{ex.ToString()}" ) ;
flag = false ;
}
}
return stockRepeats ;
}
#endregion
#region 还 药
/// <summary>
/// 归还药品——根据处方还药
/// </summary>
/// <returns></returns>
public List < OrderInfo > ReturnDrugInfo ( string searchCode , string searchValue , string orderDate , int PageNum , int PageSize , ref int totalCount )
{
List < OrderInfo > orderList = new List < OrderInfo > ( ) ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
string strSql = $ @ " SELECT COUNT(1) FROM (SELECT oi.order_id,oi.Order_No,oi.Patient_id,oi.P_name,oi.sex,oi.age,oi.id_number,oi.Order_date,oi.charge_date,oi.recv_date,oi.dept_code,oi.dept_name FROM order_info oi Inner JOIN order_detail od ON (oi.order_no =od.order_no )
Inner JOIN ( SELECT chsguid , chnguid , machine_id , row_no , col_no , pos_no , drug_id , manu_no , eff_date , quantity , drawer_type , board_type ,
state FROM channel_stock WHERE ( drawer_type = 1 ) AND ( machine_id = ' { machine_id } ' ) GROUP BY drug_id ) t
ON ( od . drug_id = t . drug_id ) WHERE ( oi . dm_status = 1 ) AND ( oi . his_disp_flag = 1 ) ";
if ( ! string . IsNullOrEmpty ( orderDate ) )
{
strSql + = $" AND (DATE_FORMAT(oi.order_date, '%Y-%m-%d') = '{orderDate}' )" ;
}
switch ( searchCode )
{
case "OrderNo" :
strSql + = $" and oi.order_no='{searchValue}' " ;
break ;
case "PatientId" :
strSql + = $" and patient_id='{searchValue}'" ;
break ;
}
if ( ! string . IsNullOrEmpty ( ConfigurationManager . AppSettings [ "storage" ] ) )
{
strSql + = $" AND oi.pharmacy='{ConfigurationManager.AppSettings[" storage "].ToString()}'" ;
}
strSql + = " AND (oi.cancel_flag = 1 ) GROUP BY oi.order_date ) CountTable " ;
MySqlCommand cmd = new MySqlCommand ( ) ;
cmd . Connection = con ;
cmd . CommandText = strSql ;
totalCount = Convert . ToInt32 ( cmd . ExecuteScalar ( ) ) ;
PageNum = ( PageNum - 1 ) * PageSize ;
string searchSql = $ @ "SELECT oi.order_id,oi.Order_No,oi.Patient_id,oi.P_name,oi.sex,oi.age,oi.id_number,oi.Order_date,oi.charge_date,oi.recv_date,oi.dept_code,oi.dept_name FROM order_info oi Inner JOIN order_detail od ON (oi.order_no =od.order_no ) Inner JOIN (SELECT chsguid,chnguid,machine_id,row_no,col_no,
pos_no , drug_id , manu_no , eff_date , quantity , drawer_type , board_type , state FROM channel_stock WHERE ( drawer_type = 1 )
AND ( machine_id = ' { machine_id } ' ) GROUP BY drug_id ) t ON ( od . drug_id = t . drug_id ) WHERE
( oi . dm_status = 1 ) AND ( oi . his_disp_flag = 1 ) AND ( oi . cancel_flag = 1 ) ";
if ( ! string . IsNullOrEmpty ( orderDate ) )
{
searchSql + = $" AND (DATE_FORMAT(oi.order_date, '%Y-%m-%d') = '{orderDate}' )" ;
}
switch ( searchCode )
{
case "OrderNo" :
searchSql + = $" and oi.order_no='{searchValue}' " ;
break ;
case "PatientId" :
searchSql + = $" and patient_id='{searchValue}'" ;
break ;
}
if ( ! string . IsNullOrEmpty ( ConfigurationManager . AppSettings [ "storage" ] ) )
{
searchSql + = $" AND oi.pharmacy='{ConfigurationManager.AppSettings[" storage "].ToString()}'" ;
}
searchSql + = $" GROUP BY oi.order_date LIMIT {PageNum},{PageSize} " ;
cmd . CommandText = searchSql ;
MySqlDataReader reader = cmd . ExecuteReader ( ) ;
while ( reader . Read ( ) )
{
OrderInfo order = new OrderInfo ( ) ;
order . OrderId = reader . GetInt32 ( "order_id" ) ;
order . OrderNo = reader [ "Order_No" ] is DBNull ? "" : reader . GetString ( "Order_No" ) ;
order . PatientId = reader [ "Patient_id" ] is DBNull ? "" : reader . GetString ( "Patient_id" ) ;
order . PName = reader [ "P_name" ] is DBNull ? "" : reader . GetString ( "P_name" ) ;
order . Sex = reader [ "sex" ] is DBNull ? "" : reader . GetString ( "sex" ) ;
order . Age = reader [ "age" ] is DBNull ? "" : reader . GetString ( "age" ) ;
order . IdNumber = reader [ "id_number" ] is DBNull ? "" : reader . GetString ( "id_number" ) ;
order . OrderDate = reader [ "Order_date" ] is DBNull ? DateTime . Now : reader . GetDateTime ( "Order_date" ) ;
order . ChargeDate = reader [ "charge_date" ] is DBNull ? DateTime . Now : reader . GetDateTime ( "charge_date" ) ;
order . RecvDate = reader [ "recv_date" ] is DBNull ? DateTime . Now : reader . GetDateTime ( "recv_date" ) ;
order . DeptName = reader [ "dept_name" ] is DBNull ? "" : reader . GetString ( "Order_date" ) ;
orderList . Add ( order ) ;
}
reader . Close ( ) ;
}
catch ( Exception ex )
{
logger . Info ( $"按处方归还药品异常——{ex.Message}" ) ;
}
}
return orderList ;
}
public List < OrderDetail > GetReturnDrugDetail ( string orderNo )
{
List < OrderDetail > orderDetailsList = new List < OrderDetail > ( ) ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
string strSql = $ @ "SELECT od.id,od.patient_id,od.order_no,od.charge_date,od.drug_id,od.quantity,od.order_unit,od.unit_convercoef,od.set_manu_no,
od . set_eff_date , od . use_discrip , od . use_frequ , od . use_once , od . use_by , od . use_self , od . use_dosage , di . Drug_name FROM order_detail od Inner JOIN drug_info di on od . Drug_ID = di . Drug_ID Inner JOIN
( SELECT chsguid , chnguid , machine_id , row_no , col_no , pos_no , drug_id , manu_no , eff_date , quantity , drawer_type , board_type , state FROM channel_stock
WHERE ( drawer_type = 1 ) AND ( machine_id = ' { machine_id } ' ) GROUP BY drug_id ) t ON ( od . drug_id = t . drug_id ) WHERE ( od . order_no = ' { orderNo } ' ) ";
MySqlDataAdapter dataAdapter = new MySqlDataAdapter ( strSql , con ) ;
DataSet ds = new DataSet ( ) ;
dataAdapter . Fill ( ds ) ;
if ( ds ! = null & & ds . Tables [ 0 ] ! = null & & ds . Tables [ 0 ] . Rows . Count > 0 )
{
for ( int i = 0 ; i < ds . Tables [ 0 ] . Rows . Count ; i + + )
{
OrderDetail od = new OrderDetail ( ) ;
od . SetEffDate = ds . Tables [ 0 ] . Rows [ i ] [ "set_eff_date" ] . ToString ( ) ;
od . SetManuNo = ds . Tables [ 0 ] . Rows [ i ] [ "set_manu_no" ] . ToString ( ) ;
od . DrugId = ds . Tables [ 0 ] . Rows [ i ] [ "drug_id" ] . ToString ( ) ;
od . Quantity = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "quantity" ] ) ;
DrugInfo drugInfo = new DrugInfo ( ) ;
drugInfo . DrugName = ds . Tables [ 0 ] . Rows [ i ] [ "Drug_name" ] . ToString ( ) ;
od . DrugInfo = drugInfo ;
orderDetailsList . Add ( od ) ;
}
}
MySqlCommand cmd = new MySqlCommand ( ) ;
}
catch ( Exception ex )
{
logger . Info ( $"归还药品获取明细异常——{ex.Message}" ) ;
}
}
return orderDetailsList ;
}
/// <summary>
/// 获取还药库位信息——根据处方还药
/// </summary>
/// <param name="drugId"></param>
/// <returns></returns>
public List < ChannelStock > GetChannelStocksForReturn ( string drugId , string setEffDate , string setManuNo )
{
List < ChannelStock > channelStockList = new List < ChannelStock > ( ) ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
string stockSql = $ @ "SELECT chsguid,chnguid,machine_id,row_no,col_no,pos_no,drug_id,manu_no,eff_date,quantity,drawer_type,board_type,state
FROM channel_stock WHERE ( drawer_type = 1 ) AND ( machine_id = ' { machine_id } ' ) AND ( drug_id = ' { drugId } ' ) ";
if ( ! string . IsNullOrEmpty ( setEffDate ) )
{
stockSql + = " AND EFF_DATE='{setEffDate}'" ;
}
if ( ! string . IsNullOrEmpty ( setManuNo ) )
{
stockSql + = " AND MANU_NO='{setManuNo}'" ;
}
stockSql + = "ORDER BY eff_date ASC " ;
MySqlCommand cmd = new MySqlCommand ( ) ;
cmd . CommandType = CommandType . Text ;
cmd . Connection = con ;
cmd . CommandText = stockSql ;
MySqlDataReader reader = cmd . ExecuteReader ( ) ;
while ( reader . Read ( ) )
{
ChannelStock stock = new ChannelStock ( ) ;
stock . Id = reader [ "chsguid" ] is DBNull ? "" : reader . GetString ( "chsguid" ) ;
stock . Chnguid = reader [ "chnguid" ] is DBNull ? "" : reader . GetString ( "chnguid" ) ;
stock . MachineId = reader [ "machine_id" ] is DBNull ? "" : reader . GetString ( "machine_id" ) ;
stock . DrawerNo = reader [ "row_no" ] is DBNull ? 0 : reader . GetInt32 ( "row_no" ) ;
stock . ColNo = reader [ "col_no" ] is DBNull ? 0 : reader . GetInt32 ( "col_no" ) ;
stock . PosNo = reader [ "pos_no" ] is DBNull ? 0 : reader . GetInt32 ( "pos_no" ) ;
stock . DrugId = reader [ "drug_id" ] is DBNull ? "" : reader . GetString ( "drug_id" ) ;
stock . ManuNo = reader [ "manu_no" ] is DBNull ? "" : reader . GetString ( "manu_no" ) ;
stock . EffDate = reader [ "eff_date" ] is DBNull ? "" : reader . GetString ( "eff_date" ) ;
stock . Quantity = reader [ "quantity" ] is DBNull ? 0 : reader . GetInt32 ( "quantity" ) ;
stock . DrawerType = reader [ "drawer_type" ] is DBNull ? 0 : reader . GetInt32 ( "drawer_type" ) ;
stock . BoardType = reader [ "board_type" ] is DBNull ? 0 : reader . GetInt32 ( "board_type" ) ;
stock . State = reader [ "state" ] is DBNull ? 0 : reader . GetInt32 ( "state" ) ;
channelStockList . Add ( stock ) ;
}
reader . Close ( ) ;
}
catch ( Exception ex )
{
logger . Info ( $"GetChannelStocks异常——{ex.Message}" ) ;
}
}
return channelStockList ;
}
//保存归还药品——根据处方还药
public bool ReturnDrugSave ( List < ChannelStock > record , string orderNo )
{
bool bFlag = false ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
MySqlTransaction transaction = con . BeginTransaction ( ) ;
try
{
string updatSql = $@"UPDATE ORDER_INFO SET dm_status=2 WHERE ORDER_NO='{orderNo}'" ;
MySqlCommand cmd = new MySqlCommand ( ) ;
cmd . Transaction = transaction ;
cmd . CommandType = CommandType . Text ;
cmd . Connection = con ;
cmd . CommandText = updatSql ;
int iResult = cmd . ExecuteNonQuery ( ) ;
for ( int i = 0 ; i < record . Count ; i + + )
{
ChannelStock it = record [ i ] ;
int quantity = it . Quantity + it . ReturnQuantity ;
string stockupdatSql = $@"UPDATE channel_stock SET quantity={quantity},manu_no='{it.ManuNo}',eff_date='{it.EffDate}' where chsguid='{it.Id}'" ;
cmd . CommandText = stockupdatSql ;
iResult = cmd . ExecuteNonQuery ( ) ;
List < ChannelStock > nowChannels = new List < ChannelStock > ( ) ;
string searchSql = $@"SELECT drug_id,manu_no,quantity FROM channel_stock WHERE drawer_type=1 AND MACHINE_ID='{machine_id}' AND DRUG_ID='{it.DrugId}'" ;
MySqlDataAdapter mySqlDataAdapter = new MySqlDataAdapter ( searchSql , con ) ;
DataSet ds = new DataSet ( ) ;
mySqlDataAdapter . Fill ( ds ) ;
if ( ds ! = null & & ds . Tables [ 0 ] ! = null & & ds . Tables [ 0 ] . Rows . Count > 0 )
{
for ( int j = 0 ; j < ds . Tables [ 0 ] . Rows . Count ; j + + )
{
ChannelStock stock = new ChannelStock ( ) ;
stock . DrugId = ds . Tables [ 0 ] . Rows [ j ] [ "drug_id" ] . ToString ( ) ;
stock . ManuNo = ds . Tables [ 0 ] . Rows [ j ] [ "manu_no" ] . ToString ( ) ;
stock . Quantity = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ j ] [ "quantity" ] ) ;
nowChannels . Add ( stock ) ;
}
}
DateTime ? effDate = ! String . IsNullOrEmpty ( it . EffDate ) ? DateTime . ParseExact ( it . EffDate , "yyyy-MM-dd" , System . Globalization . CultureInfo . CurrentCulture ) : null ;
int? Operator = HomeWindowViewModel . Operator ? . Id ;
int? Reviewer = HomeWindowViewModel . Reviewer ? . Id ;
int stockQuantity = nowChannels . Sum ( it = > it . Quantity ) ;
int manunoQuantity = nowChannels . FindAll ( it2 = > it2 . ManuNo = = it . ManuNo ) . Sum ( it = > it . Quantity ) ;
string insertSql = $ @ "INSERT INTO dm_machine_record SET MACHINE_ID='{it.MachineId}',
ROW_NO = ' { it . DrawerNo } ' , COL_NO = ' { it . ColNo } ' , DRUG_ID = ' { it . DrugInfo } ' , manu_no = ' { it . ManuNo } ' , eff_date = ' { effDate } ' , operator = { Operator } , reviewer = { Reviewer } , operation_time = ' { DateTime . Now } ' ,
quantity = { it . ReturnQuantity } , type = 31 , invoice_id = ' { orderNo } ' , stock_quantity = { stockQuantity } , manunoQuantity = { manunoQuantity } ";
cmd . CommandText = insertSql ;
cmd . Parameters . Clear ( ) ;
cmd . ExecuteNonQuery ( ) ;
}
transaction . Commit ( ) ;
bFlag = true ;
}
catch ( Exception ex )
{
logger . Info ( $"ReturnDrugSave异常——{ex.Message}" ) ;
transaction . Rollback ( ) ;
bFlag = false ;
}
}
return bFlag ;
}
/// <summary>
/// 根据抽屉号、库位号查询库存数据(用于更新近 效期、批次)
/// </summary>
/// <param name="rowNo"></param>
/// <param name="colNo"></param>
/// <returns></returns>
public List < ChannelStock > GetStockManuEffDate ( int rowNo , int colNo )
{
List < ChannelStock > stockList = new List < ChannelStock > ( ) ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
string strSql = $@"SELECT drug_id,manu_no,row_no,col_no,chsguid,chnguid FROM channel_stock WHERE MACHINE_ID='{machine_id}' AND ROW_NO='{rowNo}' AND COL_NO='{colNo}' order by eff_date" ;
MySqlDataAdapter mySqlDataAdapter = new MySqlDataAdapter ( strSql , con ) ;
DataSet ds = new DataSet ( ) ;
mySqlDataAdapter . Fill ( ds ) ;
if ( ds ! = null & & ds . Tables [ 0 ] ! = null & & ds . Tables [ 0 ] . Rows . Count > 0 )
{
for ( int i = 0 ; i < ds . Tables [ 0 ] . Rows . Count ; i + + )
{
ChannelStock stock = new ChannelStock ( ) ;
stock . DrugId = ds . Tables [ 0 ] . Rows [ i ] [ "drug_id" ] . ToString ( ) ;
stock . ManuNo = ds . Tables [ 0 ] . Rows [ i ] [ "manu_no" ] . ToString ( ) ;
stock . DrawerNo = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "row_no" ] ) ;
stock . ColNo = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "col_no" ] ) ;
stock . Id = ds . Tables [ 0 ] . Rows [ i ] [ "chsguid" ] . ToString ( ) ;
stock . Chnguid = ds . Tables [ 0 ] . Rows [ i ] [ "chnguid" ] . ToString ( ) ;
stockList . Add ( stock ) ;
}
}
}
catch ( Exception ex )
{
logger . Info ( $"GetStockManuEffDate异常——{ex.Message}" ) ;
}
}
return stockList ;
}
/// <summary>
/// 归还药品加载数据——根据药品还药
/// </summary>
/// <returns></returns>
public List < MachineRecord > ReturnDrugByDrug ( string searchCode , string searchValue , int PageNum , int PageSize , ref int totalCount )
{
List < MachineRecord > machineRecordList = new List < MachineRecord > ( ) ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
MySqlCommand cmd = new MySqlCommand ( ) ;
cmd . CommandType = CommandType . Text ;
cmd . Connection = con ;
string countSql = $ @ "SELECT count(1)
FROM dm_machine_record mr inner join drug_info di on mr . drug_id = di . drug_id inner join user_list ul on mr . operator = ul . id
WHERE ( mr . type = 2 ) AND ( mr . status < 2 ) AND ( mr . machine_id = ' { machine_id } ' ) ";
if ( ! string . IsNullOrEmpty ( searchCode ) & & ! string . IsNullOrEmpty ( searchValue ) )
{
switch ( searchCode )
{
case "DrugName" :
countSql + = $@" AND di.drug_name='{searchValue}'" ;
break ;
case "PyCode" :
countSql + = $@" AND di.py_code='{searchValue}'" ;
break ;
case "DrugBarcode" :
countSql + = $@" AND di.drug_barcode='{searchValue}'" ;
break ;
case "DrugId" :
countSql + = $@" AND mr.drug_id='{searchValue}'" ;
break ;
}
}
cmd . CommandText = countSql ;
totalCount = Convert . ToInt32 ( cmd . ExecuteScalar ( ) ) ;
PageNum = ( PageNum - 1 ) * PageSize ;
string stockSql = $ @ "SELECT mr.id,mr.machine_id,mr.drug_id,mr.quantity,mr.stock_quantity,mr.check_quantity,mr.manu_no,mr.operator,mr.reviewer,mr.operation_time,
mr . eff_date , mr . type , mr . invoice_id , mr . col_no , mr . drawer_no , mr . department_id , mr . status , mr . return_quantity1 , mr . return_quantity2 , mr . get_id , mr . is_destroy ,
mr . manunoQuantity , mr . supplierDept , mr . receiveDept , ul . user_name , ul . user_id , di . drug_name , di . drug_spec
FROM dm_machine_record mr inner join drug_info di on mr . drug_id = di . drug_id inner join user_list ul on mr . operator = ul . id
WHERE ( mr . type = 2 ) AND ( mr . status < 2 ) AND ( mr . machine_id = ' { machine_id } ' ) ";
if ( ! string . IsNullOrEmpty ( searchCode ) & & ! string . IsNullOrEmpty ( searchValue ) )
{
switch ( searchCode )
{
case "DrugName" :
stockSql + = $@" AND di.drug_name='{searchValue}'" ;
break ;
case "PyCode" :
stockSql + = $@" AND di.py_code='{searchValue}'" ;
break ;
case "DrugBarcode" :
stockSql + = $@" AND di.drug_barcode='{searchValue}'" ;
break ;
case "DrugId" :
stockSql + = $@" AND mr.drug_id='{searchValue}'" ;
break ;
}
}
stockSql + = $" ORDER BY mr.operation_time ASC LIMIT {PageNum},{PageSize} " ;
cmd . CommandText = stockSql ;
MySqlDataReader reader = cmd . ExecuteReader ( ) ;
while ( reader . Read ( ) )
{
UserList user = new UserList ( ) ;
user . Id = reader [ "operator" ] is DBNull ? 0 : reader . GetInt32 ( "operator" ) ;
user . UserName = reader [ "user_id" ] is DBNull ? "" : reader . GetString ( "user_id" ) ;
user . Nickname = reader [ "user_name" ] is DBNull ? "" : reader . GetString ( "user_name" ) ;
DrugInfo drug = new DrugInfo ( ) ;
drug . DrugName = reader [ "drug_name" ] is DBNull ? "" : reader . GetString ( "drug_name" ) ;
drug . DrugSpec = reader [ "drug_spec" ] is DBNull ? "" : reader . GetString ( "drug_spec" ) ;
drug . DrugId = reader [ "drug_id" ] is DBNull ? "" : reader . GetString ( "drug_id" ) ;
MachineRecord machineRecord = new MachineRecord ( ) ;
machineRecord . User = user ;
machineRecord . DrugInfo = drug ;
machineRecord . Id = reader [ "id" ] is DBNull ? 0 : reader . GetInt32 ( "id" ) ;
machineRecord . MachineId = reader [ "machine_id" ] is DBNull ? "" : reader . GetString ( "machine_id" ) ;
machineRecord . DrugId = reader [ "drug_id" ] is DBNull ? "" : reader . GetString ( "drug_id" ) ;
machineRecord . Quantity = reader [ "quantity" ] is DBNull ? 0 : reader . GetInt32 ( "quantity" ) ;
machineRecord . StockQuantity = reader [ "stock_quantity" ] is DBNull ? 0 : reader . GetInt32 ( "stock_quantity" ) ;
machineRecord . CheckQuantity = reader [ "check_quantity" ] is DBNull ? 0 : reader . GetInt32 ( "check_quantity" ) ;
machineRecord . ManuNo = reader [ "manu_no" ] is DBNull ? "" : reader . GetString ( "manu_no" ) ;
machineRecord . Operator = reader [ "operator" ] is DBNull ? 0 : reader . GetInt32 ( "operator" ) ;
machineRecord . Reviewer = reader [ "reviewer" ] is DBNull ? 0 : reader . GetInt32 ( "reviewer" ) ;
machineRecord . OperationTime = reader [ "operation_time" ] is DBNull ? DateTime . Now . AddYears ( - 100 ) : reader . GetDateTime ( "operation_time" ) ;
machineRecord . EffDate = reader [ "eff_date" ] is DBNull ? null : reader . GetDateTime ( "eff_date" ) ;
machineRecord . InvoiceId = reader [ "invoice_id" ] is DBNull ? "" : reader . GetString ( "invoice_id" ) ;
machineRecord . ColNo = reader [ "col_no" ] is DBNull ? 0 : reader . GetInt32 ( "col_no" ) ;
machineRecord . DrawerNo = reader [ "drawer_no" ] is DBNull ? 0 : reader . GetInt32 ( "drawer_no" ) ;
machineRecord . DepartmentId = reader [ "department_id" ] is DBNull ? "" : reader . GetString ( "department_id" ) ;
machineRecord . Status = reader [ "status" ] is DBNull ? 0 : reader . GetInt32 ( "status" ) ;
machineRecord . ReturnQuantity1 = reader [ "return_quantity1" ] is DBNull ? 0 : reader . GetInt32 ( "return_quantity1" ) ;
machineRecord . ReturnQuantity2 = reader [ "return_quantity2" ] is DBNull ? 0 : reader . GetInt32 ( "return_quantity2" ) ;
machineRecord . GetId = reader [ "get_id" ] is DBNull ? 0 : reader . GetInt32 ( "get_id" ) ;
machineRecord . IsDestroy = reader [ "is_destroy" ] is DBNull ? 0 : reader . GetInt32 ( "is_destroy" ) ;
machineRecord . ManunoQuantity = reader [ "manunoQuantity" ] is DBNull ? 0 : reader . GetInt32 ( "manunoQuantity" ) ;
machineRecord . SupplierDept = reader [ "supplierDept" ] is DBNull ? "" : reader . GetString ( "supplierDept" ) ;
machineRecord . ReceiveDept = reader [ "receiveDept" ] is DBNull ? "" : reader . GetString ( "receiveDept" ) ;
machineRecordList . Add ( machineRecord ) ;
}
reader . Close ( ) ;
}
catch ( Exception ex )
{
logger . Info ( $"GetChannelStocks异常——{ex.Message}" ) ;
}
}
return machineRecordList ;
}
public List < ChannelStock > ReturnDrugByDrugDialog ( string drugId , string manuNo )
{
List < ChannelStock > channelStockList = new List < ChannelStock > ( ) ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
string strSql = $ @ "SELECT chsguid,chnguid,machine_id,row_no,col_no,pos_no,drug_id,manu_no,eff_date,quantity,drawer_type,board_type,state
FROM channel_stock WHERE drug_id = ' { drugId } ' AND machine_id = ' { machine_id } ' AND manu_no = ' { manuNo } ' ORDER BY row_no ASC , col_no ASC ";
MySqlDataAdapter dataAdapter = new MySqlDataAdapter ( strSql , con ) ;
DataSet ds = new DataSet ( ) ;
dataAdapter . Fill ( ds ) ;
if ( ds ! = null & & ds . Tables [ 0 ] ! = null & & ds . Tables [ 0 ] . Rows . Count > 0 )
{
for ( int i = 0 ; i < ds . Tables [ 0 ] . Rows . Count ; i + + )
{
ChannelStock cs = new ChannelStock ( ) ;
cs . Id = ds . Tables [ 0 ] . Rows [ i ] [ "chsguid" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "chsguid" ] . ToString ( ) ;
cs . Chnguid = ds . Tables [ 0 ] . Rows [ i ] [ "chnguid" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "chnguid" ] . ToString ( ) ;
cs . MachineId = ds . Tables [ 0 ] . Rows [ i ] [ "machine_id" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "machine_id" ] . ToString ( ) ;
cs . DrawerNo = ds . Tables [ 0 ] . Rows [ i ] [ "row_no" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "row_no" ] ) ;
cs . ColNo = ds . Tables [ 0 ] . Rows [ i ] [ "col_no" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "col_no" ] ) ;
cs . PosNo = ds . Tables [ 0 ] . Rows [ i ] [ "pos_no" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "pos_no" ] ) ;
cs . DrugId = ds . Tables [ 0 ] . Rows [ i ] [ "drug_id" ] . ToString ( ) ;
cs . ManuNo = ds . Tables [ 0 ] . Rows [ i ] [ "manu_no" ] . ToString ( ) ;
cs . EffDate = ds . Tables [ 0 ] . Rows [ i ] [ "eff_date" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "eff_date" ] . ToString ( ) ;
cs . Quantity = ds . Tables [ 0 ] . Rows [ i ] [ "quantity" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "quantity" ] ) ;
cs . DrawerType = ds . Tables [ 0 ] . Rows [ i ] [ "drawer_type" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "drawer_type" ] ) ;
cs . BoardType = ds . Tables [ 0 ] . Rows [ i ] [ "board_type" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "board_type" ] ) ;
cs . State = ds . Tables [ 0 ] . Rows [ i ] [ "state" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "state" ] ) ;
channelStockList . Add ( cs ) ;
}
}
}
catch ( Exception ex )
{
logger . Info ( $"ReturnDrugByDrugDialog——{ex.Message}" ) ;
}
}
return channelStockList ;
}
/// <summary>
/// 保存归还药品——根据药品还药
/// </summary>
/// <param name="drugId"></param>
/// <param name="setEffDate"></param>
/// <param name="setManuNo"></param>
/// <returns></returns>
public bool ReturnDrugByDrugSave ( int returnQuantity , string invoice_id , ChannelStock channelStock , MachineRecord machineRecord )
{
bool bFlag = false ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
MySqlTransaction transaction = con . BeginTransaction ( ) ;
try
{
int quantity = channelStock . Quantity + returnQuantity ;
string updatSql = $@"UPDATE channel_stock SET quantity='{quantity}' WHERE chsguid='{channelStock.Id}'" ;
MySqlCommand cmd = new MySqlCommand ( ) ;
cmd . Transaction = transaction ;
cmd . CommandType = CommandType . Text ;
cmd . Connection = con ;
cmd . CommandText = updatSql ;
int iResult = cmd . ExecuteNonQuery ( ) ;
string querySql = $ @ "SELECT chsguid,chnguid,machine_id,row_no,col_no,pos_no,drug_id,manu_no,eff_date,
quantity , drawer_type , board_type , state FROM channel_stock
WHERE ( machine_id = ' { machine_id } ' ) AND ( drug_id = ' { channelStock . DrugId } ' ) AND ( drawer_type = 1 ) ";
MySqlDataAdapter dataAdapter = new MySqlDataAdapter ( querySql , con ) ;
DataSet ds = new DataSet ( ) ;
dataAdapter . Fill ( ds ) ;
List < ChannelStock > nowChannels = new List < ChannelStock > ( ) ;
if ( ds ! = null & & ds . Tables [ 0 ] ! = null & & ds . Tables [ 0 ] . Rows . Count > 0 )
{
for ( int i = 0 ; i < ds . Tables [ 0 ] . Rows . Count ; i + + )
{
ChannelStock cs = new ChannelStock ( ) ;
cs . Id = ds . Tables [ 0 ] . Rows [ i ] [ "chsguid" ] . ToString ( ) ;
cs . Chnguid = ds . Tables [ 0 ] . Rows [ i ] [ "chnguid" ] . ToString ( ) ;
cs . DrawerNo = ds . Tables [ 0 ] . Rows [ i ] [ "row_no" ] is DBNull ? - 1 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "row_no" ] ) ;
cs . ColNo = ds . Tables [ 0 ] . Rows [ i ] [ "col_no" ] is DBNull ? - 1 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "col_no" ] ) ;
cs . PosNo = ds . Tables [ 0 ] . Rows [ i ] [ "pos_no" ] is DBNull ? - 1 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "pos_no" ] ) ;
cs . DrugId = ds . Tables [ 0 ] . Rows [ i ] [ "drug_id" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "drug_id" ] . ToString ( ) ;
cs . ManuNo = ds . Tables [ 0 ] . Rows [ i ] [ "manu_no" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "manu_no" ] . ToString ( ) ; ;
cs . EffDate = ds . Tables [ 0 ] . Rows [ i ] [ "eff_date" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "eff_date" ] . ToString ( ) ; ;
cs . Quantity = ds . Tables [ 0 ] . Rows [ i ] [ "quantity" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "quantity" ] ) ;
cs . DrawerType = ds . Tables [ 0 ] . Rows [ i ] [ "drawer_type" ] is DBNull ? - 1 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "drawer_type" ] ) ; ;
cs . BoardType = ds . Tables [ 0 ] . Rows [ i ] [ "board_type" ] is DBNull ? - 1 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "board_type" ] ) ; ;
cs . State = ds . Tables [ 0 ] . Rows [ i ] [ "state" ] is DBNull ? - 1 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "state" ] ) ;
nowChannels . Add ( cs ) ;
}
}
int status = ( machineRecord . CanReturnQuantity - returnQuantity ) = = 0 ? 2 : 1 ;
string upMachineSql = $@"UPDATE dm_machine_record SET status='{status}',return_quantity1='{machineRecord.ReturnQuantity1 + returnQuantity}' WHERE id='{machineRecord.Id}'" ;
cmd . CommandText = upMachineSql ;
iResult = cmd . ExecuteNonQuery ( ) ;
DateTime ? EffDate = ! String . IsNullOrEmpty ( channelStock . EffDate ) ? DateTime . ParseExact ( channelStock . EffDate , "yyyy-MM-dd" , System . Globalization . CultureInfo . CurrentCulture ) : null ;
string insertSql = $ @ "INSERT INTO dm_machine_record
( machine_id , drug_id , quantity , stock_quantity , manu_no , operator , reviewer , operation_time , eff_date ,
type , invoice_id , col_no , drawer_no , get_id , manunoQuantity )
VALUES
( ' { machine_id } ',' { channelStock . DrugId } ' , { returnQuantity } , ' { nowChannels . Sum ( it = > it . Quantity ) } ',' { channelStock . ManuNo } ' ,
{ HomeWindowViewModel . Operator ? . Id } , { HomeWindowViewModel . Reviewer ? . Id } , ' { DateTime . Now } ',' { EffDate } ' ,
31 , ' { invoice_id } ' , { channelStock . ColNo } , { channelStock . DrawerNo } , ' { machineRecord . Id } ' ,
' { nowChannels . FindAll ( it2 = > it2 . ManuNo = = channelStock . ManuNo ) . Sum ( it = > it . Quantity ) } ' ) ";
cmd . CommandText = insertSql ;
iResult = cmd . ExecuteNonQuery ( ) ;
transaction . Commit ( ) ;
bFlag = true ;
}
catch ( Exception ex )
{
logger . Info ( $"ReturnDrugSave异常——{ex.Message}" ) ;
transaction . Rollback ( ) ;
bFlag = false ;
}
}
return bFlag ;
}
///归还空瓶
public List < ChannelStock > ReturnEmptyInfo ( )
{
List < ChannelStock > stockList = new List < ChannelStock > ( ) ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
string strSql = $ @ "SELECT (SELECT IFNULL(SUM(IFNULL((( mr.quantity - mr.return_quantity1 ) - mr.return_quantity2 ),0)),0) FROM dm_machine_record mr
WHERE ( mr . status < > 2 ) AND ( mr . type = 2 ) AND ( mr . drug_id = cs . drug_id ) limit 0 , 1 ) AS CanReturnQuantity ,
di . drug_id AS DiDrugId , di . drug_name AS DiDrugName , di . drug_spec AS DiDrugSpec , di . manufactory AS DiManufactory ,
di . pack_unit AS DiPackUnit , cs . quantity AS Quantity , cs . chsguid AS Id , cs . chnguid AS Chnguid , cs . machine_id AS MachineId , cs . row_no AS DrawerNo ,
cs . col_no AS ColNo , cs . pos_no AS PosNo , cs . drug_id AS DrugId , cs . manu_no AS ManuNo , cs . eff_date AS EffDate , cs . drawer_type AS DrawerType ,
cs . board_type AS BoardType , cs . state AS State FROM channel_stock cs
Left JOIN drug_info di ON ( cs . drug_id = CAST ( di . drug_id AS CHAR ) ) WHERE ( cs . drawer_type < > 1 ) ORDER BY cs . row_no ASC , cs . col_no ASC ";
MySqlDataAdapter mySqlDataAdapter = new MySqlDataAdapter ( strSql , con ) ;
DataSet ds = new DataSet ( ) ;
mySqlDataAdapter . Fill ( ds ) ;
if ( ds ! = null & & ds . Tables [ 0 ] ! = null & & ds . Tables [ 0 ] . Rows . Count > 0 )
{
for ( int i = 0 ; i < ds . Tables [ 0 ] . Rows . Count ; i + + )
{
ChannelStock stock = new ChannelStock ( ) ;
stock . CanReturnQuantity = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "CanReturnQuantity" ] ) ;
DrugInfo di = new DrugInfo ( ) ;
di . DrugId = ds . Tables [ 0 ] . Rows [ i ] [ "DiDrugId" ] . ToString ( ) ;
di . DrugName = ds . Tables [ 0 ] . Rows [ i ] [ "DiDrugName" ] . ToString ( ) ;
di . DrugSpec = ds . Tables [ 0 ] . Rows [ i ] [ "DiDrugSpec" ] . ToString ( ) ;
di . Manufactory = ds . Tables [ 0 ] . Rows [ i ] [ "DiManufactory" ] . ToString ( ) ;
di . PackUnit = ds . Tables [ 0 ] . Rows [ i ] [ "DiPackUnit" ] . ToString ( ) ;
stock . DrugInfo = di ;
stock . Quantity = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "Quantity" ] ) ;
stock . Id = ds . Tables [ 0 ] . Rows [ i ] [ "Id" ] . ToString ( ) ;
stock . Chnguid = ds . Tables [ 0 ] . Rows [ i ] [ "Chnguid" ] . ToString ( ) ;
stock . MachineId = ds . Tables [ 0 ] . Rows [ i ] [ "MachineId" ] . ToString ( ) ;
stock . DrawerNo = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "DrawerNo" ] ) ;
stock . BoardType = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "BoardType" ] ) ;
stock . State = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "State" ] ) ;
stockList . Add ( stock ) ;
}
}
}
catch ( Exception ex )
{
logger . Info ( $"ReturnEmptyInfo异常——{ex.Message}" ) ;
}
}
return stockList ;
}
/// <summary>
/// 还空瓶弹窗加载数据
/// </summary>
/// <param name="drugId"></param>
/// <returns></returns>
public List < MachineRecord > ReturnEmptyDetails ( string drugId )
{
List < MachineRecord > recordList = new List < MachineRecord > ( ) ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
string strSql = $ @ "SELECT id,machine_id,drug_id,quantity,stock_quantity,check_quantity,manu_no,operator,reviewer,operation_time,
eff_date , type , invoice_id , col_no , drawer_no , department_id , status , return_quantity1 , return_quantity2 , get_id , is_destroy , manunoQuantity ,
supplierDept , receiveDept FROM dm_machine_record DR INNER JOIN UserList UL ON DR . WHERE MACHINE_ID = ' { machine_id } ' AND TYPE = 2 AND STATUS < > 2 AND DRUG_ID = ' { drugId } ' ORDER BY operation_time , id ";
MySqlDataAdapter mySqlDataAdapter = new MySqlDataAdapter ( strSql , con ) ;
DataSet ds = new DataSet ( ) ;
mySqlDataAdapter . Fill ( ds ) ;
if ( ds ! = null & & ds . Tables [ 0 ] ! = null & & ds . Tables [ 0 ] . Rows . Count > 0 )
{
for ( int i = 0 ; i < ds . Tables [ 0 ] . Rows . Count ; i + + )
{
MachineRecord record = new MachineRecord ( ) ;
record . Id = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "id" ] ) ;
record . MachineId = ds . Tables [ 0 ] . Rows [ i ] [ "machine_id" ] . ToString ( ) ;
record . DrugId = ds . Tables [ 0 ] . Rows [ i ] [ "drug_id" ] . ToString ( ) ;
record . Quantity = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "quantity" ] ) ;
record . StockQuantity = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "stock_quantity" ] ) ;
record . CheckQuantity = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "check_quantity" ] ) ;
record . ManuNo = ds . Tables [ 0 ] . Rows [ i ] [ "manu_no" ] . ToString ( ) ;
record . Operator = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "operator" ] ) ;
record . Reviewer = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "reviewer" ] is DBNull ? 0 : ds . Tables [ 0 ] . Rows [ i ] [ "reviewer" ] ) ;
record . OperationTime = Convert . ToDateTime ( ds . Tables [ 0 ] . Rows [ i ] [ "operation_time" ] ) ;
record . EffDate = Convert . ToDateTime ( ds . Tables [ 0 ] . Rows [ i ] [ "eff_date" ] ) ;
record . Type = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "type" ] ) ;
record . InvoiceId = ds . Tables [ 0 ] . Rows [ i ] [ "invoice_id" ] . ToString ( ) ;
record . ColNo = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "col_no" ] ) ;
record . DrawerNo = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "drawer_no" ] ) ;
record . DepartmentId = ds . Tables [ 0 ] . Rows [ i ] [ "department_id" ] . ToString ( ) ;
record . Status = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "status" ] ) ;
record . ReturnQuantity1 = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "return_quantity1" ] ) ;
record . ReturnQuantity2 = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "return_quantity2" ] ) ;
record . GetId = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "get_id" ] ) ;
record . IsDestroy = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "is_destroy" ] ) ;
record . ManunoQuantity = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "manunoQuantity" ] ) ;
record . SupplierDept = ds . Tables [ 0 ] . Rows [ i ] [ "supplierDept" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "supplierDept" ] . ToString ( ) ;
record . ReceiveDept = ds . Tables [ 0 ] . Rows [ i ] [ "receiveDept" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "receiveDept" ] . ToString ( ) ;
recordList . Add ( record ) ;
}
}
}
catch ( Exception ex )
{
logger . Info ( $"ReturnEmptyDetails——{ex.Message}" ) ;
}
}
return recordList ;
}
//保存归还空瓶
public bool ReturnEmptySave ( int Quantity , string id , List < MachineRecord > records , string drug_id , ChannelStock channelStock , int ReturnQuantity )
{
bool bFlag = false ;
List < ChannelStock > nowChannels = new List < ChannelStock > ( ) ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
MySqlTransaction transaction = con . BeginTransaction ( ) ;
try
{
string InvoiceId = "RETURN_" + ( long ) ( DateTime . UtcNow - Jan1st1970 ) . TotalMilliseconds ;
string updateSql = $@"UPDATE CHANNEL_STOCK SET QUANTITY='{Quantity}' WHERE ID='{id}'" ;
MySqlCommand cmd = new MySqlCommand ( ) ;
cmd . Connection = con ;
cmd . Transaction = transaction ;
cmd . CommandText = updateSql ;
int iResult = cmd . ExecuteNonQuery ( ) ;
string querySql = $@"SELECT drug_id,manu_no,quantity FROM CHANNEL_STOCK WHERE MACHINE_ID='{machine_id}' AND DRUG_ID='{drug_id}' AND drawer_type=1" ;
MySqlDataAdapter mySqlDataAdapter = new MySqlDataAdapter ( querySql , con ) ;
DataSet ds = new DataSet ( ) ;
mySqlDataAdapter . Fill ( ds ) ;
if ( ds ! = null & & ds . Tables [ 0 ] ! = null & & ds . Tables [ 0 ] . Rows . Count > 0 )
{
for ( int i = 0 ; i < ds . Tables [ 0 ] . Rows . Count ; i + + )
{
ChannelStock stock = new ChannelStock ( ) ;
stock . DrugId = ds . Tables [ 0 ] . Rows [ i ] [ "drug_id" ] . ToString ( ) ;
stock . ManuNo = ds . Tables [ 0 ] . Rows [ i ] [ "manu_no" ] . ToString ( ) ;
stock . Quantity = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "quantity" ] ) ;
nowChannels . Add ( stock ) ;
}
}
for ( int j = 0 ; j < records . Count ; j + + )
{
MachineRecord _MachineRecord = records [ j ] ;
string updateRecordSql = $@"UPDATE dm_machine_record SET return_quantity2={_MachineRecord.Quantity - _MachineRecord.ReturnQuantity1},STATUS=2 WHERE ID='{_MachineRecord.Id}'" ;
cmd . CommandText = updateRecordSql ;
cmd . ExecuteNonQuery ( ) ;
DateTime ? effDate = ! String . IsNullOrEmpty ( channelStock . EffDate ) ? DateTime . ParseExact ( channelStock . EffDate , "yyyy-MM-dd" , System . Globalization . CultureInfo . CurrentCulture ) : null ;
int? Operator = HomeWindowViewModel . Operator ? . Id ;
int? Reviewer = HomeWindowViewModel . Reviewer ? . Id ;
int StockQuantity = nowChannels . Sum ( it = > it . Quantity ) ;
int ManunoQuantity = nowChannels . FindAll ( it2 = > it2 . ManuNo = = channelStock . ManuNo ) . Sum ( it = > it . Quantity ) ;
string insertSql = $ @ "INSERT INTO dm_machine_record(MACHINE_ID,ROW_NO,COL_NO,DRUG_ID,MANU_NO,EFF_DATE,operator,reviewer,operation_time,quantity,
TYPE , invoice_id , get_id , stock_quantity , manunoQuantity ) VALUES ( ' { machine_id } ',' { channelStock . DrawerNo } ',' { channelStock . ColNo } ',' { channelStock . DrugId } ',' { _MachineRecord . ManuNo } ' ,
' { effDate } ',' { Operator } ',' { Reviewer } ',' { DateTime . Now } ',' { ReturnQuantity } ' , 32 , { InvoiceId } , { _MachineRecord . Id } , { StockQuantity } , { ManunoQuantity } ) ";
cmd . CommandText = insertSql ;
cmd . ExecuteNonQuery ( ) ;
}
transaction . Commit ( ) ;
bFlag = true ;
}
catch ( Exception ex )
{
transaction . Rollback ( ) ;
logger . Info ( $"ReturnEmptySave异常——{ex.Message}" ) ;
bFlag = false ;
}
}
return bFlag ;
}
#endregion
#region
//标签绑定
public List < DrugInfo > BinddingDetailInfo ( )
{
List < DrugInfo > drugInfoList = new List < DrugInfo > ( ) ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
string str = $ @ "SELECT d.drug_id,d.py_code,d.drug_barcode,d.drug_name,d.drug_brand_name,d.drug_spec,d.dosage,d.pack_unit,d.manufactory,d.max_stock,
CONCAT ( drug_name , ' ' , drug_spec ) as drug_name_spec FROM drug_info d order by drug_name , drug_id ";
MySqlDataAdapter mySqlDataAdapter = new MySqlDataAdapter ( str , con ) ;
DataSet ds = new DataSet ( ) ;
mySqlDataAdapter . Fill ( ds ) ;
if ( ds ! = null & & ds . Tables [ 0 ] ! = null & & ds . Tables [ 0 ] . Rows . Count > 0 )
{
for ( int i = 0 ; i < ds . Tables [ 0 ] . Rows . Count ; i + + )
{
DrugInfo di = new DrugInfo ( ) ;
di . DrugId = ds . Tables [ 0 ] . Rows [ i ] [ "drug_id" ] . ToString ( ) ;
di . PyCode = ds . Tables [ 0 ] . Rows [ i ] [ "py_code" ] . ToString ( ) ;
di . DrugBarcode = ds . Tables [ 0 ] . Rows [ i ] [ "drug_barcode" ] . ToString ( ) ;
di . DrugName = ds . Tables [ 0 ] . Rows [ i ] [ "drug_name" ] . ToString ( ) ;
di . DrugBrandname = ds . Tables [ 0 ] . Rows [ i ] [ "drug_brand_name" ] . ToString ( ) ;
di . DrugSpec = ds . Tables [ 0 ] . Rows [ i ] [ "drug_spec" ] . ToString ( ) ;
di . Dosage = ds . Tables [ 0 ] . Rows [ i ] [ "dosage" ] . ToString ( ) ;
di . PackUnit = ds . Tables [ 0 ] . Rows [ i ] [ "pack_unit" ] . ToString ( ) ;
di . Manufactory = ds . Tables [ 0 ] . Rows [ i ] [ "manufactory" ] . ToString ( ) ;
//di.MaxStock = ds.Tables[0].Rows[i]["max_stock"];
di . drug_name_spec = ds . Tables [ 0 ] . Rows [ i ] [ "drug_name_spec" ] . ToString ( ) ;
drugInfoList . Add ( di ) ;
}
}
}
catch ( Exception ex )
{
logger . Info ( $"ReturnEmptyInfo异常——{ex.Message}" ) ;
}
}
return drugInfoList ;
}
/// <summary>
/// 根据查询绑定标签
/// </summary>
/// <returns></returns>
public List < DrugInfo > BinddingDetailInfoBySearch ( string searchValue = null )
{
List < DrugInfo > drugInfoList = new List < DrugInfo > ( ) ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
string str = $ @ "SELECT d.drug_id,d.py_code,d.drug_barcode,d.drug_name,d.drug_brand_name,d.drug_spec,d.dosage,d.pack_unit,d.manufactory,d.max_stock,
CONCAT ( drug_name , ' ' , drug_spec ) as drug_name_spec FROM drug_info d ";
if ( ! string . IsNullOrEmpty ( searchValue ) )
{
str + = $" WHERE Drug_name LIKE '%{searchValue}%' OR py_code LIKE '%{searchValue}%' OR drug_id LIKE '%{searchValue}%'" ;
}
str + = " order by drug_name,drug_id" ;
MySqlDataAdapter mySqlDataAdapter = new MySqlDataAdapter ( str , con ) ;
DataSet ds = new DataSet ( ) ;
mySqlDataAdapter . Fill ( ds ) ;
if ( ds ! = null & & ds . Tables [ 0 ] ! = null & & ds . Tables [ 0 ] . Rows . Count > 0 )
{
for ( int i = 0 ; i < ds . Tables [ 0 ] . Rows . Count ; i + + )
{
DrugInfo di = new DrugInfo ( ) ;
di . DrugId = ds . Tables [ 0 ] . Rows [ i ] [ "drug_id" ] . ToString ( ) ;
di . PyCode = ds . Tables [ 0 ] . Rows [ i ] [ "py_code" ] . ToString ( ) ;
di . DrugBarcode = ds . Tables [ 0 ] . Rows [ i ] [ "drug_barcode" ] . ToString ( ) ;
di . DrugName = ds . Tables [ 0 ] . Rows [ i ] [ "drug_name" ] . ToString ( ) ;
di . DrugBrandname = ds . Tables [ 0 ] . Rows [ i ] [ "drug_brand_name" ] . ToString ( ) ;
di . DrugSpec = ds . Tables [ 0 ] . Rows [ i ] [ "drug_spec" ] . ToString ( ) ;
di . Dosage = ds . Tables [ 0 ] . Rows [ i ] [ "dosage" ] . ToString ( ) ;
di . PackUnit = ds . Tables [ 0 ] . Rows [ i ] [ "pack_unit" ] . ToString ( ) ;
di . Manufactory = ds . Tables [ 0 ] . Rows [ i ] [ "manufactory" ] . ToString ( ) ;
//di.MaxStock = ds.Tables[0].Rows[i]["max_stock"];
di . drug_name_spec = ds . Tables [ 0 ] . Rows [ i ] [ "drug_name_spec" ] . ToString ( ) ;
drugInfoList . Add ( di ) ;
}
}
}
catch ( Exception ex )
{
logger . Info ( $"ReturnEmptyInfo异常——{ex.Message}" ) ;
}
}
return drugInfoList ;
}
/// <summary>
///
/// </summary>
/// <param name="row_no"></param>
/// <param name="PageNum"></param>
/// <param name="PageSize"></param>
/// <param name="totalCount"></param>
/// <returns></returns>
public List < ChannelList > GetChannelsByDrawerNo ( int row_no , int PageNum , int PageSize , ref int totalCount )
{
List < ChannelList > channelLists = new List < ChannelList > ( ) ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
string countSql = $@"SELECT COUNT(1) FROM channel_list CL LEFT JOIN DRUG_INFO DI ON CL.DRUG_ID=DI.DRUG_ID WHERE CL.MACHINE_ID='{machine_id}' " ;
if ( row_no > 0 )
{
countSql + = $" AND ROW_NO={row_no} " ;
}
countSql + = " ORDER BY CL.ROW_NO,CL.COL_NO" ;
MySqlCommand cmd = new MySqlCommand ( countSql , con ) ;
totalCount = Convert . ToInt32 ( cmd . ExecuteScalar ( ) ) ;
PageNum = ( PageNum - 1 ) * PageSize ;
string strSql = $ @ "SELECT CL.chnguid,CL.machine_id,CL.row_no,CL.col_no,CL.pos_no,CL.drug_id,CL.drawer_type,
CL . board_type , CL . state , DI . DRUG_NAME , DI . py_code , DI . drug_spec , DI . manufactory FROM channel_list CL LEFT JOIN DRUG_INFO DI ON CL . DRUG_ID = DI . DRUG_ID WHERE CL . MACHINE_ID = ' { machine_id } ' ";
if ( row_no > 0 )
{
strSql + = $" ROW_NO={row_no}" ;
}
strSql + = $" ORDER BY CL.ROW_NO,CL.COL_NO LIMIT {PageNum},{PageSize}" ;
MySqlDataAdapter mySqlDataAdapter = new MySqlDataAdapter ( strSql , con ) ;
DataSet ds = new DataSet ( ) ;
mySqlDataAdapter . Fill ( ds ) ;
if ( ds ! = null & & ds . Tables [ 0 ] ! = null & & ds . Tables [ 0 ] . Rows . Count > 0 )
{
for ( int i = 0 ; i < ds . Tables [ 0 ] . Rows . Count ; i + + )
{
ChannelList clist = new ChannelList ( ) ;
clist . Id = ds . Tables [ 0 ] . Rows [ i ] [ "chnguid" ] . ToString ( ) ;
clist . MachineId = ds . Tables [ 0 ] . Rows [ i ] [ "machine_id" ] . ToString ( ) ;
clist . DrawerNo = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "row_no" ] ) ;
clist . ColNo = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "col_no" ] ) ;
clist . PosNo = ds . Tables [ 0 ] . Rows [ i ] [ "pos_no" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "pos_no" ] ) ;
clist . DrugId = ds . Tables [ 0 ] . Rows [ i ] [ "drug_id" ] . ToString ( ) ;
clist . DrawerType = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "drawer_type" ] ) ;
clist . BoardType = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "board_type" ] ) ;
clist . State = ds . Tables [ 0 ] . Rows [ i ] [ "state" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "state" ] ) ;
DrugInfo di = new DrugInfo ( ) ;
di . DrugId = ds . Tables [ 0 ] . Rows [ i ] [ "drug_id" ] . ToString ( ) ;
di . DrugName = ds . Tables [ 0 ] . Rows [ i ] [ "DRUG_NAME" ] . ToString ( ) ;
di . PyCode = ds . Tables [ 0 ] . Rows [ i ] [ "py_code" ] . ToString ( ) ;
di . DrugSpec = ds . Tables [ 0 ] . Rows [ i ] [ "drug_spec" ] . ToString ( ) ;
di . Manufactory = ds . Tables [ 0 ] . Rows [ i ] [ "manufactory" ] . ToString ( ) ;
clist . Drug = di ;
string csSql = $ @ "SELECT chsguid AS Id,chnguid AS Chnguid,machine_id AS MachineId,row_no AS DrawerNo,col_no AS ColNo,pos_no AS PosNo,
drug_id AS DrugId , manu_no AS ManuNo , eff_date AS EffDate , quantity AS Quantity , drawer_type AS DrawerType , board_type AS BoardType , state AS State
FROM channel_stock WHERE chnguid = ' { ds . Tables [ 0 ] . Rows [ i ] [ "chnguid" ] . ToString ( ) } ' ";
List < ChannelStock > csList = new List < ChannelStock > ( ) ;
MySqlDataAdapter mySqlDataAdapter2 = new MySqlDataAdapter ( csSql , con ) ;
DataSet ds2 = new DataSet ( ) ;
mySqlDataAdapter2 . Fill ( ds2 ) ;
if ( ds2 ! = null & & ds2 . Tables [ 0 ] ! = null & & ds2 . Tables [ 0 ] . Rows . Count > 0 )
{
for ( int j = 0 ; j < ds2 . Tables [ 0 ] . Rows . Count ; j + + )
{
ChannelStock cs = new ChannelStock ( ) ;
cs . Id = ds2 . Tables [ 0 ] . Rows [ j ] [ "Id" ] . ToString ( ) ;
cs . Chnguid = ds2 . Tables [ 0 ] . Rows [ j ] [ "Chnguid" ] . ToString ( ) ;
cs . MachineId = ds2 . Tables [ 0 ] . Rows [ j ] [ "MachineId" ] . ToString ( ) ;
cs . DrawerNo = Convert . ToInt32 ( ds2 . Tables [ 0 ] . Rows [ j ] [ "DrawerNo" ] ) ;
cs . ColNo = Convert . ToInt32 ( ds2 . Tables [ 0 ] . Rows [ j ] [ "ColNo" ] ) ;
cs . PosNo = ds2 . Tables [ 0 ] . Rows [ j ] [ "PosNo" ] is DBNull ? 0 : Convert . ToInt32 ( ds2 . Tables [ 0 ] . Rows [ j ] [ "PosNo" ] ) ;
cs . DrugId = ds2 . Tables [ 0 ] . Rows [ j ] [ "DrugId" ] . ToString ( ) ;
cs . ManuNo = ds2 . Tables [ 0 ] . Rows [ j ] [ "ManuNo" ] . ToString ( ) ;
cs . EffDate = ds2 . Tables [ 0 ] . Rows [ j ] [ "EffDate" ] . ToString ( ) ;
cs . Quantity = ds2 . Tables [ 0 ] . Rows [ j ] [ "Quantity" ] is DBNull ? 0 : Convert . ToInt32 ( ds2 . Tables [ 0 ] . Rows [ j ] [ "Quantity" ] ) ;
cs . DrawerType = ds2 . Tables [ 0 ] . Rows [ j ] [ "DrawerType" ] is DBNull ? 0 : Convert . ToInt32 ( ds2 . Tables [ 0 ] . Rows [ j ] [ "DrawerType" ] ) ;
cs . BoardType = ds2 . Tables [ 0 ] . Rows [ j ] [ "BoardType" ] is DBNull ? 0 : Convert . ToInt32 ( ds2 . Tables [ 0 ] . Rows [ j ] [ "BoardType" ] ) ;
cs . State = ds2 . Tables [ 0 ] . Rows [ j ] [ "State" ] is DBNull ? 0 : Convert . ToInt32 ( ds2 . Tables [ 0 ] . Rows [ j ] [ "State" ] ) ;
csList . Add ( cs ) ;
}
}
clist . channelStocks = csList ;
channelLists . Add ( clist ) ;
}
}
}
catch ( Exception ex )
{
logger . Info ( $"GetChannelsByDrawerNo异常——{ex.Message}" ) ;
}
}
return channelLists ;
}
/// <summary>
/// 回收库位查询
/// </summary>
/// <returns></returns>
public int BindQuery ( string drugId )
{
int iResult = 0 ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
string querySql = $@"SELECT count(1) FROM CHANNEL_LIST WHERE MACHINE_ID='{machine_id}' AND DRUG_ID='{drugId}' AND drawer_type<>1" ;
MySqlCommand cmd = new MySqlCommand ( querySql , con ) ;
iResult = Convert . ToInt32 ( cmd . ExecuteScalar ( ) ) ;
}
catch ( Exception ex )
{
logger . Info ( $"BindQuery异常——{ex.Message}" ) ;
}
}
return iResult ;
}
public int BindQueryByDrugIdDrawerNo ( string drugId , int drawerNo )
{
int iResult = 0 ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
string querySql = $@"SELECT count(1) FROM CHANNEL_LIST WHERE MACHINE_ID='{machine_id}' AND DRUG_ID='{drugId}' AND drawer_type=1 AND ROW_NO={drawerNo}" ;
MySqlCommand cmd = new MySqlCommand ( querySql , con ) ;
iResult = Convert . ToInt32 ( cmd . ExecuteScalar ( ) ) ;
}
catch ( Exception ex )
{
logger . Info ( $"BindQuery异常——{ex.Message}" ) ;
}
}
return iResult ;
}
/// <summary>
/// 移出绑定
/// </summary>
/// <returns></returns>
public bool BindDrugRemvoe ( string chnguid )
{
bool bFlag = false ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
MySqlTransaction transaction = con . BeginTransaction ( ) ;
try
{
string strSql = $@"UPDATE CHANNEL_LIST SET DRUG_ID=NULL WHERE chnguid='{chnguid}'" ;
MySqlCommand cmd = new MySqlCommand ( ) ;
cmd . Transaction = transaction ;
cmd . Connection = con ;
cmd . CommandText = strSql ;
cmd . ExecuteNonQuery ( ) ;
string updateStockSql = $@"UPDATE CHANNEL_STOCK SET DRUG_ID=NULL,MANU_NO=NULL,EFF_DATE=NULL WHERE CHNGUID='{chnguid}'" ;
cmd . CommandText = updateStockSql ;
cmd . ExecuteNonQuery ( ) ;
transaction . Commit ( ) ;
bFlag = true ;
2025-04-11 17:01:07 +08:00
logger . Info ( $"解绑药品完成CHNGUID:{chnguid}" ) ;
2024-07-06 10:01:30 +08:00
}
catch ( Exception ex )
{
logger . Info ( $"BindDrugRemvoe异常——{ex.Message}" ) ;
transaction . Rollback ( ) ;
}
}
return bFlag ;
}
public int GetChannelStocksByChnguid ( string chnguid )
{
int iRestult = 0 ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
string strSql = $@"SELECT count(1) FROM CHANNEL_STOCK WHERE MACHINE_ID='{machine_id}' AND CHNGUID='{chnguid}' AND QUANTITY>0" ;
MySqlCommand cmd = new MySqlCommand ( strSql , con ) ;
iRestult = Convert . ToInt32 ( cmd . ExecuteScalar ( ) ) ;
}
catch ( Exception ex )
{
logger . Info ( $"GetChannelStocksByChnguid异常——{ex.Message}" ) ;
}
}
return iRestult ;
}
public bool updateChannelList ( string chnguid , string drugId )
{
bool bFlag = false ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
string insertSql = $@"UPDATE CHANNEL_LIST SET DRUG_ID='{drugId}',pos_no=0 where chnguid='{chnguid}'" ;
MySqlCommand cmd = new MySqlCommand ( insertSql , con ) ;
int iResult = cmd . ExecuteNonQuery ( ) ;
if ( iResult > 0 )
{
bFlag = true ;
}
}
catch ( Exception ex )
{
logger . Info ( $"updateChannelList异常——{ex.Message}" ) ;
}
}
return bFlag ;
}
#endregion
#region 库 存 管 理
/// <summary>
/// 库存列表加载数据
/// </summary>
/// <param name="searchCode"></param>
/// <param name="searchValue"></param>
/// <param name="pageNum"></param>
/// <param name="pageSize"></param>
/// <param name="totalCount"></param>
/// <returns></returns>
public List < DrugInfo > StockListInfo ( string searchCode , string searchValue , int pageNum , int pageSize , ref int totalCount )
{
List < DrugInfo > drugList = new List < DrugInfo > ( ) ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
string sql = $ @ "SELECT Count(1) FROM drug_info di WHERE ( EXISTS (SELECT 1 FROM channel_stock cs
WHERE ( ( cs . machine_id = ' { machine_id } ' ) AND ( cs . drug_id IS NOT NULL ) ) AND drug_id = di . drug_id ) ) ";
if ( ! string . IsNullOrEmpty ( searchValue ) )
{
switch ( searchCode )
{
case "DrugId" :
sql + = $" AND (drug_id like concat('%{searchValue}%')) " ;
break ;
case "DrugName" :
sql + = $" AND (drug_name like concat('%{searchValue}%'))" ;
break ;
case "PyCode" :
sql + = $" AND (py_code LIKE CONCAT('%{searchValue}%')" ;
break ;
case "DrugBarcode" :
sql + = $" AND (drug_barcode LIKE CONCAT('%{searchValue}%')" ; ;
break ;
}
}
MySqlCommand cmd = new MySqlCommand ( sql , con ) ;
totalCount = Convert . ToInt32 ( cmd . ExecuteScalar ( ) ) ;
pageNum = ( pageNum - 1 ) * pageSize ;
string strSql = $ @ "SELECT drug_id,py_code,drug_barcode,drug_name,drug_brand_name,drug_spec,dosage,pack_unit,manufactory,max_stock
FROM drug_info di WHERE ( EXISTS ( SELECT 1 FROM channel_stock cs
WHERE ( ( cs . machine_id = ' { machine_id } ' ) AND ( cs . drug_id IS NOT NULL ) ) AND drug_id = di . drug_id ) ) ";
if ( ! string . IsNullOrEmpty ( searchValue ) )
{
switch ( searchCode )
{
case "DrugId" :
strSql + = $" AND (drug_id like concat('%{searchValue}%')) " ;
break ;
case "DrugName" :
strSql + = $" AND (drug_name like concat('%{searchValue}%'))" ;
break ;
case "PyCode" :
strSql + = $" AND (py_code LIKE CONCAT('%{searchValue}%')" ;
break ;
case "DrugBarcode" :
strSql + = $" AND (drug_barcode LIKE CONCAT('%{searchValue}%')" ; ;
break ;
}
}
strSql + = $" ORDER BY drug_name ASC LIMIT {pageNum},{pageSize}" ;
MySqlDataAdapter dataAdapter = new MySqlDataAdapter ( strSql , con ) ;
DataSet ds = new DataSet ( ) ;
dataAdapter . Fill ( ds ) ;
if ( ds ! = null & & ds . Tables [ 0 ] ! = null & & ds . Tables [ 0 ] . Rows . Count > 0 )
{
for ( int i = 0 ; i < ds . Tables [ 0 ] . Rows . Count ; i + + )
{
DrugInfo di = new DrugInfo ( ) ;
di . DrugId = ds . Tables [ 0 ] . Rows [ i ] [ "drug_id" ] . ToString ( ) ;
di . PyCode = ds . Tables [ 0 ] . Rows [ i ] [ "py_code" ] . ToString ( ) ;
di . DrugBarcode = ds . Tables [ 0 ] . Rows [ i ] [ "drug_barcode" ] . ToString ( ) ;
di . DrugName = ds . Tables [ 0 ] . Rows [ i ] [ "drug_name" ] . ToString ( ) ;
di . DrugBrandname = ds . Tables [ 0 ] . Rows [ i ] [ "drug_brand_name" ] . ToString ( ) ;
di . DrugSpec = ds . Tables [ 0 ] . Rows [ i ] [ "drug_spec" ] . ToString ( ) ;
di . Dosage = ds . Tables [ 0 ] . Rows [ i ] [ "dosage" ] . ToString ( ) ;
di . PackUnit = ds . Tables [ 0 ] . Rows [ i ] [ "pack_unit" ] . ToString ( ) ;
di . Manufactory = ds . Tables [ 0 ] . Rows [ i ] [ "manufactory" ] . ToString ( ) ;
di . MaxStock = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "max_stock" ] is DBNull ? 0 : ds . Tables [ 0 ] . Rows [ i ] [ "max_stock" ] ) ;
List < ChannelStock > stockList = new List < ChannelStock > ( ) ;
string stockSql = $ @ "SELECT chsguid AS Id,chnguid AS Chnguid,machine_id AS MachineId,row_no AS DrawerNo,col_no AS ColNo,pos_no AS PosNo,
drug_id AS DrugId , manu_no AS ManuNo , eff_date AS EffDate , quantity AS Quantity , drawer_type AS DrawerType , board_type AS BoardType , state AS State
FROM CHANNEL_STOCK WHERE DRUG_ID = ' { di . DrugId } ' AND ( drawer_type = 1 ) AND ( ( machine_id = ' { machine_id } ' ) AND ( drug_id IS NOT NULL ) ) ORDER BY row_no , col_no ";
MySqlDataAdapter stockAdapter = new MySqlDataAdapter ( stockSql , con ) ;
DataSet stockDS = new DataSet ( ) ;
stockAdapter . Fill ( stockDS ) ;
if ( stockDS ! = null & & stockDS . Tables [ 0 ] ! = null & & stockDS . Tables [ 0 ] . Rows . Count > 0 )
{
for ( int j = 0 ; j < stockDS . Tables [ 0 ] . Rows . Count ; j + + )
{
ChannelStock stock = new ChannelStock ( ) ;
stock . Id = stockDS . Tables [ 0 ] . Rows [ j ] [ "Id" ] . ToString ( ) ;
stock . Chnguid = stockDS . Tables [ 0 ] . Rows [ j ] [ "Chnguid" ] . ToString ( ) ;
stock . MachineId = stockDS . Tables [ 0 ] . Rows [ j ] [ "MachineId" ] . ToString ( ) ;
stock . DrawerNo = stockDS . Tables [ 0 ] . Rows [ j ] [ "DrawerNo" ] is DBNull ? - 1 : Convert . ToInt32 ( stockDS . Tables [ 0 ] . Rows [ j ] [ "DrawerNo" ] ) ;
stock . ColNo = stockDS . Tables [ 0 ] . Rows [ j ] [ "ColNo" ] is DBNull ? - 1 : Convert . ToInt32 ( stockDS . Tables [ 0 ] . Rows [ j ] [ "ColNo" ] ) ;
stock . PosNo = stockDS . Tables [ 0 ] . Rows [ j ] [ "PosNo" ] is DBNull ? - 1 : Convert . ToInt32 ( stockDS . Tables [ 0 ] . Rows [ j ] [ "PosNo" ] ) ;
stock . DrugId = stockDS . Tables [ 0 ] . Rows [ j ] [ "DrugId" ] . ToString ( ) ;
stock . ManuNo = stockDS . Tables [ 0 ] . Rows [ j ] [ "ManuNo" ] . ToString ( ) ;
stock . EffDate = stockDS . Tables [ 0 ] . Rows [ j ] [ "EffDate" ] . ToString ( ) ;
stock . Quantity = stockDS . Tables [ 0 ] . Rows [ j ] [ "Quantity" ] is DBNull ? - 1 : Convert . ToInt32 ( stockDS . Tables [ 0 ] . Rows [ j ] [ "Quantity" ] ) ;
stock . DrawerType = stockDS . Tables [ 0 ] . Rows [ j ] [ "DrawerType" ] is DBNull ? - 1 : Convert . ToInt32 ( stockDS . Tables [ 0 ] . Rows [ j ] [ "DrawerType" ] ) ;
stock . BoardType = stockDS . Tables [ 0 ] . Rows [ j ] [ "BoardType" ] is DBNull ? - 1 : Convert . ToInt32 ( stockDS . Tables [ 0 ] . Rows [ j ] [ "BoardType" ] ) ;
stock . State = stockDS . Tables [ 0 ] . Rows [ j ] [ "State" ] is DBNull ? - 1 : Convert . ToInt32 ( stockDS . Tables [ 0 ] . Rows [ j ] [ "State" ] ) ;
stockList . Add ( stock ) ;
}
}
di . channelStocks = stockList ;
drugList . Add ( di ) ;
}
}
// string sql2 = $@"SELECT drug_id,py_code,drug_barcode,drug_name,drug_brand_name,drug_spec,dosage,pack_unit,manufactory,max_stock
//FROM drug_info di WHERE (drug_name like concat('%',@MethodConst0,'%')) AND ( EXISTS (SELECT 1 FROM channel_stock cs
//WHERE ((cs.machine_id = IFNULL( @Const2 ,@MethodConst3)) AND( cs.drug_id IS NOT NULL )) AND drug_id=di.drug_id ) )
//ORDER BY drug_id ASC LIMIT 0,3";
// string sql3 = $@"SELECT chsguid AS Id,chnguid AS Chnguid,machine_id AS MachineId,row_no AS DrawerNo,col_no AS ColNo,pos_no AS PosNo,
// drug_id AS DrugId,manu_no AS ManuNo,eff_date AS EffDate,quantity AS Quantity,drawer_type AS DrawerType,board_type AS BoardType,state AS State
// FROM channel_stock WHERE drug_id IN ('11492','12613','12614') AND ( drawer_type = 1 ) AND ((machine_id = '{machine_id}')
// AND( drug_id IS NOT NULL )) ORDER BY row_no , col_no ";
}
catch ( Exception ex )
{
logger . Info ( $"StockListInfo异常——{ex.Message}" ) ;
}
}
return drugList ;
}
/// <summary>
/// 库存盘点加载数据
/// </summary>
/// <returns></returns>
public List < ChannelStock > CheckStockInfo ( string searchValue )
{
List < ChannelStock > stockList = new List < ChannelStock > ( ) ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
string sql = $ @ "SELECT cs.chsguid,cs.chnguid,cs.machine_id,cs.row_no,cs.col_no,cs.pos_no,cs.drug_id,cs.manu_no,
cs . eff_date , cs . quantity , cs . drawer_type , cs . board_type , cs . state , DI . DRUG_NAME , DI . DRUG_SPEC , DI . DOSAGE , DI . MANUFACTORY , DI . PY_CODE FROM channel_stock cs
Inner JOIN channel_list cl ON ( ( cs . chnguid = cl . chnguid ) AND ( cs . drug_id = cl . drug_id ) ) INNER JOIN DRUG_INFO DI ON cs . drug_id = DI . drug_id
WHERE ( cs . drawer_type = 1 ) AND ( cs . drug_id IS NOT NULL )
AND ( cs . machine_id = ' { machine_id } ' ) ";
if ( ! string . IsNullOrEmpty ( searchValue ) )
{
sql + = $" AND DI.DRUG_NAME='{searchValue}'" ;
}
sql + = " ORDER BY cs.row_no ASC,cs.col_no ASC" ;
MySqlDataAdapter dataAdapter = new MySqlDataAdapter ( sql , con ) ;
DataSet ds = new DataSet ( ) ;
dataAdapter . Fill ( ds ) ;
if ( ds ! = null & & ds . Tables [ 0 ] ! = null & & ds . Tables [ 0 ] . Rows . Count > 0 )
{
for ( int i = 0 ; i < ds . Tables [ 0 ] . Rows . Count ; i + + )
{
ChannelStock stock = new ChannelStock ( ) ;
stock . Id = ds . Tables [ 0 ] . Rows [ i ] [ "chsguid" ] . ToString ( ) ;
stock . Chnguid = ds . Tables [ 0 ] . Rows [ i ] [ "chnguid" ] . ToString ( ) ;
stock . MachineId = ds . Tables [ 0 ] . Rows [ i ] [ "machine_id" ] . ToString ( ) ;
stock . DrawerNo = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "row_no" ] ) ;
stock . ColNo = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "col_no" ] ) ;
stock . PosNo = ds . Tables [ 0 ] . Rows [ i ] [ "pos_no" ] is DBNull ? - 1 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "pos_no" ] ) ;
stock . DrugId = ds . Tables [ 0 ] . Rows [ i ] [ "drug_id" ] . ToString ( ) ;
stock . ManuNo = ds . Tables [ 0 ] . Rows [ i ] [ "manu_no" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "manu_no" ] . ToString ( ) ;
stock . EffDate = ds . Tables [ 0 ] . Rows [ i ] [ "eff_date" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "eff_date" ] . ToString ( ) ;
stock . Quantity = ds . Tables [ 0 ] . Rows [ i ] [ "quantity" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "quantity" ] ) ;
stock . DrawerType = ds . Tables [ 0 ] . Rows [ i ] [ "drawer_type" ] is DBNull ? - 1 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "drawer_type" ] ) ;
stock . BoardType = ds . Tables [ 0 ] . Rows [ i ] [ "board_type" ] is DBNull ? - 1 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "board_type" ] ) ;
stock . State = ds . Tables [ 0 ] . Rows [ i ] [ "state" ] is DBNull ? - 1 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "state" ] ) ;
DrugInfo di = new DrugInfo ( ) ;
di . DrugId = ds . Tables [ 0 ] . Rows [ i ] [ "drug_id" ] . ToString ( ) ;
di . DrugName = ds . Tables [ 0 ] . Rows [ i ] [ "DRUG_NAME" ] . ToString ( ) ;
di . DrugSpec = ds . Tables [ 0 ] . Rows [ i ] [ "DRUG_SPEC" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "DRUG_SPEC" ] . ToString ( ) ;
di . Dosage = ds . Tables [ 0 ] . Rows [ i ] [ "DOSAGE" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "DOSAGE" ] . ToString ( ) ;
di . Manufactory = ds . Tables [ 0 ] . Rows [ i ] [ "MANUFACTORY" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "MANUFACTORY" ] . ToString ( ) ;
di . PyCode = ds . Tables [ 0 ] . Rows [ i ] [ "PY_CODE" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "PY_CODE" ] . ToString ( ) ;
stock . DrugInfo = di ;
stockList . Add ( stock ) ;
}
}
}
catch ( Exception ex )
{
logger . Info ( $"CheckStockInfo异常——{ex.Message}" ) ;
}
}
return stockList ;
}
/// <summary>
/// 库存盘点保存
/// </summary>
/// <param name="record"></param>
/// <returns></returns>
public bool CheckStockSave ( List < ChannelStock > record )
{
bool bFlag = false ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
MySqlTransaction transaction = con . BeginTransaction ( ) ;
try
{
MySqlCommand cmd = new MySqlCommand ( ) ;
for ( int i = 0 ; i < record . Count ; i + + )
{
ChannelStock it = record [ i ] ;
string insertSql = $@"UPDATE CHANNEL_STOCK SET QUANTITY={it.CheckQuantity},MANU_NO='{it.ManuNo}',EFF_DATE='{it.EffDate}' WHERE CHSGUID='{it.Id}'" ;
cmd . CommandText = insertSql ;
cmd . Connection = con ;
cmd . Transaction = transaction ;
cmd . ExecuteNonQuery ( ) ;
List < ChannelStock > nowChannels = GetChannelStocks ( it . DrugId ) ;
DateTime ? effdate = ! String . IsNullOrEmpty ( it . EffDate ) ? DateTime . ParseExact ( it . EffDate , "yyyy-MM-dd" , System . Globalization . CultureInfo . CurrentCulture ) : null ;
int? Operator = HomeWindowViewModel . Operator ? . Id ;
int? Reviewer = HomeWindowViewModel . Reviewer = = null ? - 1 : HomeWindowViewModel . Reviewer . Id ;
int Quantity = it . CheckQuantity - it . Quantity ;
string InvoiceId = "CHECK_" + ( long ) ( DateTime . UtcNow - Jan1st1970 ) . TotalMilliseconds ;
int StockQuantity = nowChannels . Sum ( it = > it . Quantity ) ;
int CheckQuantity = it . CheckQuantity ;
int ManunoQuantity = nowChannels . FindAll ( it2 = > it2 . ManuNo = = it . ManuNo ) . Sum ( it = > it . Quantity ) ;
//盘点时不记录盘点库存为0且盘点后库存仍为0的记录( 该批次可能不再用了)
if ( ! it . Quantity . Equals ( 0 ) | | ! it . CheckQuantity . Equals ( 0 ) )
{
string recordSql = $ @ "INSERT INTO dm_machine_record(MACHINE_ID,drawer_no,COL_NO,DRUG_ID,MANU_NO,EFF_DATE,OPERATOR,REVIEWER,operation_time,QUANTITY,TYPE,invoice_id,stock_quantity,check_quantity,manunoQuantity)
VALUES ( ' { it . MachineId } ' , { it . DrawerNo } , { it . ColNo } , ' { it . DrugId } ',' { it . ManuNo } ',' { effdate } ' , { Operator } , { Reviewer } , ' { DateTime . Now } ' ,
{ Quantity } , 4 , ' { InvoiceId } ' , { StockQuantity } , { CheckQuantity } , { ManunoQuantity } ) ";
cmd . CommandText = recordSql ;
cmd . ExecuteNonQuery ( ) ;
logger . Info ( $"库存盘点->库位【{it.DrawerNo}-{it.ColNo}】药品【{it.DrugInfo.DrugName}】盘点前库存【{it.Quantity}】,更改后【{it.CheckQuantity}】" ) ;
}
}
List < CheckRecordStock > checkRecordStockList = GetCheckRecordStocks ( ) ;
logger . Info ( "已完成-查询channel_stock关联drug_info表信息查询" ) ;
List < CheckRecordStock > insertList = new List < CheckRecordStock > ( ) ;
if ( checkRecordStockList ! = null & & checkRecordStockList . Count > 0 )
{
for ( int i = 0 ; i < checkRecordStockList . Count ; i + + )
{
if ( ! ( insertList . Where ( it = > it . drugId = = checkRecordStockList [ i ] . drugId & & it . manuNo = = checkRecordStockList [ i ] . manuNo ) . Count ( ) > 0 ) )
{
insertList . Add ( checkRecordStockList [ i ] ) ;
}
}
for ( int j = 0 ; j < insertList . Count ; j + + )
{
//盘点时不记录盘点库存为0且盘点后库存仍为0的记录( 该批次可能不再用了)
if ( ! insertList [ j ] . quantity . Equals ( 0 ) )
{
CheckRecordStock cStock = insertList [ j ] ;
int manuQuantiy = checkRecordStockList . Where ( it = > it . drugId = = cStock . drugId & & it . manuNo = = cStock . manuNo ) . Sum ( it = > it . quantity ) ;
int quantity = checkRecordStockList . Where ( it = > it . drugId = = cStock . drugId ) . Sum ( it = > it . quantity ) ;
string operatorUser = HomeWindowViewModel . Operator ? . Id . ToString ( ) ;
string reviewerUser = HomeWindowViewModel . Reviewer ? . Id . ToString ( ) ;
// 保存数据 盘点后药品总库存及批次库存数
string insertCheckRecordStockSql = $ @ "INSERT INTO check_stock(row_no,COL_NO,QUANTITY,MANU_NO,EFF_DATE,DRUG_NAME,DRUG_SPEC,PACK_UNIT,MANUFACTORY,MAX_STOCK,
DRUG_ID , MACHINE_ID , MANUqUANTITY , OPTDATE , OPERATOR , REVIEWER )
2025-04-11 17:01:07 +08:00
VALUES ( { cStock . rowNo } , { cStock . colNo } , { quantity } , ' { cStock . manuNo } ',' { cStock . effDate } ',' { cStock . drugName } ',' { cStock . manufactory } ',' { cStock . drugSpec } ',' { cStock . packUnit } ' ,
{ cStock . maxStock } , ' { cStock . drugId } ',' { cStock . MachineId } ' , { manuQuantiy } , ' { DateTime . Now . ToString ( ) } ',' { operatorUser } ',' { reviewerUser } ' ) ";
2024-07-06 10:01:30 +08:00
cmd . CommandText = insertCheckRecordStockSql ;
int iResult = cmd . ExecuteNonQuery ( ) ;
if ( iResult < = 0 )
{
logger . Info ( $"CheckStockSave未插入数据{insertCheckRecordStockSql}" ) ;
}
}
}
}
logger . Info ( "已完成-保存数据 盘点后药品总库存及批次库存数" ) ;
bFlag = true ;
transaction . Commit ( ) ;
}
catch ( Exception ex )
{
transaction . Rollback ( ) ;
logger . Info ( $"CheckStockSave异常——{ex.Message}" ) ;
}
}
return bFlag ;
}
public List < CheckRecordStock > GetCheckRecordStocks ( )
{
List < CheckRecordStock > stockList = new List < CheckRecordStock > ( ) ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
string strSql = $ @ "SELECT cl.row_no AS rowNo,cl.col_no AS colNo,cl.quantity AS quantity,cl.manu_no AS manuNo,cl.eff_date AS effDate,
di . drug_name AS drugName , di . drug_spec AS drugSpec , di . pack_unit AS packUnit , di . manufactory AS manufactory , di . max_stock maxStock ,
cl . drug_id AS drugId , cl . machine_id AS MachineId FROM channel_stock cl INNER JOIN drug_info di ON di . drug_id = cl . drug_id WHERE cl . machine_id = ' { machine_id } ' AND cl . drawer_type = 1 ORDER BY cl . drug_id ";
MySqlDataAdapter dataAdapter = new MySqlDataAdapter ( strSql , con ) ;
DataSet ds = new DataSet ( ) ;
dataAdapter . Fill ( ds ) ;
if ( ds ! = null & & ds . Tables [ 0 ] ! = null & & ds . Tables [ 0 ] . Rows . Count > 0 )
{
for ( int i = 0 ; i < ds . Tables [ 0 ] . Rows . Count ; i + + )
{
CheckRecordStock recordStock = new CheckRecordStock ( ) ;
recordStock . rowNo = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "rowNo" ] ) ;
recordStock . colNo = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "colNo" ] ) ;
recordStock . quantity = ds . Tables [ 0 ] . Rows [ i ] [ "quantity" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "quantity" ] ) ;
recordStock . manuNo = ds . Tables [ 0 ] . Rows [ i ] [ "manuNo" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "manuNo" ] . ToString ( ) ;
recordStock . effDate = ds . Tables [ 0 ] . Rows [ i ] [ "effDate" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "effDate" ] . ToString ( ) ;
recordStock . drugName = ds . Tables [ 0 ] . Rows [ i ] [ "drugName" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "drugName" ] . ToString ( ) ;
recordStock . drugSpec = ds . Tables [ 0 ] . Rows [ i ] [ "drugSpec" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "drugSpec" ] . ToString ( ) ;
recordStock . packUnit = ds . Tables [ 0 ] . Rows [ i ] [ "packUnit" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "packUnit" ] . ToString ( ) ;
recordStock . manufactory = ds . Tables [ 0 ] . Rows [ i ] [ "manufactory" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "manufactory" ] . ToString ( ) ;
recordStock . maxStock = ds . Tables [ 0 ] . Rows [ i ] [ "maxStock" ] . ToString ( ) = = "" ? - 1 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "maxStock" ] ) ;
recordStock . drugId = ds . Tables [ 0 ] . Rows [ i ] [ "drugId" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "drugId" ] . ToString ( ) ;
recordStock . MachineId = ds . Tables [ 0 ] . Rows [ i ] [ "MachineId" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "MachineId" ] . ToString ( ) ;
stockList . Add ( recordStock ) ;
}
}
logger . Info ( "已完成-查询channel_stock关联drug_info表信息查询" ) ;
}
catch ( Exception ex )
{
logger . Info ( $"GetCheckRecordStocks异常——{ex.Message}" ) ;
}
}
return stockList ;
}
/// <summary>
/// 盘点记录加载数据
/// </summary>
/// <param name="startDate"></param>
/// <param name="endDate"></param>
/// <param name="pageNum"></param>
/// <param name="pageSize"></param>
/// <param name="totalcount"></param>
/// <returns></returns>
public List < CheckRecordStock > CheckRecordInfo ( DateTime ? startDate , DateTime ? endDate , int pageNum , int pageSize , ref int totalcount )
{
List < CheckRecordStock > checkRecordList = new List < CheckRecordStock > ( ) ;
pageNum = ( pageNum - 1 ) * pageSize ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
string countSql = $ @ "SELECT count(1) FROM check_stock C
LEFT JOIN user_list U ON C . operator = U . ID LEFT JOIN user_list R ON C . reviewer = R . ID WHERE 1 = 1 ";
if ( startDate ! = null )
{
countSql + = $" AND C.optDate>'{startDate}' " ;
}
if ( endDate ! = null )
{
countSql + = $" AND C.optDate<'{endDate}' " ;
}
countSql + = $" GROUP BY C.optdate ORDER BY C.OPTDATE DESC limit {pageNum},{pageSize} " ;
MySqlCommand cmd = new MySqlCommand ( countSql , con ) ;
totalcount = Convert . ToInt32 ( cmd . ExecuteScalar ( ) ) ;
string strSql = @ "SELECT optDate AS optdate,U.User_name AS operatorUser,R.User_name AS reviewerUser,Drug_spec AS drugSpec,Manufactory AS manufactory,Quantity FROM check_stock C
LEFT JOIN user_list U ON C . operator = U . ID LEFT JOIN user_list R ON C . reviewer = R . ID WHERE 1 = 1 ";
if ( startDate ! = null )
{
strSql + = $" AND C.optDate>'{startDate}' " ;
}
if ( endDate ! = null )
{
strSql + = $" AND C.optDate<'{endDate}' " ;
}
strSql + = $" GROUP BY C.optdate ORDER BY C.OPTDATE DESC limit {pageNum},{pageSize} " ;
MySqlDataAdapter dataAdapter = new MySqlDataAdapter ( strSql , con ) ;
DataSet ds = new DataSet ( ) ;
dataAdapter . Fill ( ds ) ;
if ( ds ! = null & & ds . Tables [ 0 ] ! = null & & ds . Tables [ 0 ] . Rows . Count > 0 )
{
for ( int i = 0 ; i < ds . Tables [ 0 ] . Rows . Count ; i + + )
{
CheckRecordStock stock = new CheckRecordStock ( ) ;
stock . optdate = ds . Tables [ 0 ] . Rows [ i ] [ "optdate" ] . ToString ( ) ;
stock . operatorUser = ds . Tables [ 0 ] . Rows [ i ] [ "operatorUser" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "operatorUser" ] . ToString ( ) ;
stock . reviewerUser = ds . Tables [ 0 ] . Rows [ i ] [ "reviewerUser" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "reviewerUser" ] . ToString ( ) ;
stock . drugSpec = ds . Tables [ 0 ] . Rows [ i ] [ "drugSpec" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "drugSpec" ] . ToString ( ) ;
stock . manufactory = ds . Tables [ 0 ] . Rows [ i ] [ "manufactory" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "manufactory" ] . ToString ( ) ;
stock . quantity = ds . Tables [ 0 ] . Rows [ i ] [ "Quantity" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "Quantity" ] ) ;
checkRecordList . Add ( stock ) ;
}
}
}
catch ( Exception ex )
{
logger . Info ( $"CheckRecordInfo异常——{ex.Message}" ) ;
}
}
return checkRecordList ;
}
/// <summary>
/// 盘点详情加载数据
/// </summary>
/// <param name="optDate"></param>
/// <returns></returns>
public List < CheckRecordStock > CheckRecordDetailInfo ( string optDate )
{
List < CheckRecordStock > cRecordStockList = new List < CheckRecordStock > ( ) ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
string strSql = $ @ "SELECT CKS.ID,CKS.ROW_NO,CKS.COL_NO,CKS.QUANTITY,CKS.MANU_NO,CKS.EFF_DATE,CKS.DRUG_NAME,CKS.DRUG_SPEC,CKS.PACK_UNIT,CKS.MANUFACTORY,CKS.MAX_STOCK,CKS.DRUG_ID,CKS.MACHINE_ID,
CKS . MANUQUANTITY , CKS . OPTDATE , CKS . OPERATOR , CKS . REVIEWER ,
DI . PY_CODE , DI . DRUG_BARCODE , DI . DRUG_BRAND_NAME , DI . DRUG_SPEC , DI . MANUFACTORY
2025-04-11 17:01:07 +08:00
FROM check_stock CKS INNER JOIN DRUG_INFO DI ON CKS . DRUG_ID = DI . DRUG_ID WHERE optdate = ' { optDate } ' ORDER BY CKS . DRUG_ID ";
2024-07-06 10:01:30 +08:00
MySqlDataAdapter dataAdapter = new MySqlDataAdapter ( strSql , con ) ;
DataSet ds = new DataSet ( ) ;
dataAdapter . Fill ( ds ) ;
if ( ds ! = null & & ds . Tables [ 0 ] ! = null & & ds . Tables [ 0 ] . Rows . Count > 0 )
{
for ( int i = 0 ; i < ds . Tables [ 0 ] . Rows . Count ; i + + )
{
CheckRecordStock chkRStock = new CheckRecordStock ( ) ;
chkRStock . ID = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "ID" ] ) ;
chkRStock . rowNo = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "ROW_NO" ] ) ;
chkRStock . colNo = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "COL_NO" ] ) ;
chkRStock . quantity = ds . Tables [ 0 ] . Rows [ i ] [ "QUANTITY" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "QUANTITY" ] ) ;
chkRStock . manuNo = ds . Tables [ 0 ] . Rows [ i ] [ "MANU_NO" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "MANU_NO" ] . ToString ( ) ;
chkRStock . effDate = ds . Tables [ 0 ] . Rows [ i ] [ "EFF_DATE" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "EFF_DATE" ] . ToString ( ) ;
chkRStock . drugName = ds . Tables [ 0 ] . Rows [ i ] [ "DRUG_NAME" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "DRUG_NAME" ] . ToString ( ) ;
chkRStock . drugSpec = ds . Tables [ 0 ] . Rows [ i ] [ "DRUG_SPEC" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "DRUG_SPEC" ] . ToString ( ) ;
chkRStock . packUnit = ds . Tables [ 0 ] . Rows [ i ] [ "PACK_UNIT" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "PACK_UNIT" ] . ToString ( ) ;
chkRStock . manufactory = ds . Tables [ 0 ] . Rows [ i ] [ "MANUFACTORY" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "MANUFACTORY" ] . ToString ( ) ;
chkRStock . maxStock = ds . Tables [ 0 ] . Rows [ i ] [ "MAX_STOCK" ] . ToString ( ) = = "" ? - 1 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "MAX_STOCK" ] . ToString ( ) ) ;
chkRStock . drugId = ds . Tables [ 0 ] . Rows [ i ] [ "DRUG_ID" ] . ToString ( ) ;
chkRStock . MachineId = ds . Tables [ 0 ] . Rows [ i ] [ "MACHINE_ID" ] . ToString ( ) ;
chkRStock . ManuQuantity = ds . Tables [ 0 ] . Rows [ i ] [ "MANUQUANTITY" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "MANUQUANTITY" ] ) ;
chkRStock . optdate = ds . Tables [ 0 ] . Rows [ i ] [ "OPTDATE" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "OPTDATE" ] . ToString ( ) ;
chkRStock . operatorUser = ds . Tables [ 0 ] . Rows [ i ] [ "OPERATOR" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "OPERATOR" ] . ToString ( ) ;
chkRStock . reviewerUser = ds . Tables [ 0 ] . Rows [ i ] [ "REVIEWER" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "REVIEWER" ] . ToString ( ) ;
DrugInfo di = new DrugInfo ( ) ;
di . DrugId = ds . Tables [ 0 ] . Rows [ i ] [ "DRUG_ID" ] . ToString ( ) ;
di . DrugName = ds . Tables [ 0 ] . Rows [ i ] [ "DRUG_NAME" ] . ToString ( ) ;
di . PyCode = ds . Tables [ 0 ] . Rows [ i ] [ "PY_CODE" ] . ToString ( ) ;
di . DrugBarcode = ds . Tables [ 0 ] . Rows [ i ] [ "DRUG_BARCODE" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "DRUG_BARCODE" ] . ToString ( ) ;
di . DrugBrandname = ds . Tables [ 0 ] . Rows [ i ] [ "DRUG_BRAND_NAME" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "DRUG_BRAND_NAME" ] . ToString ( ) ;
di . DrugSpec = ds . Tables [ 0 ] . Rows [ i ] [ "DRUG_SPEC" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "DRUG_SPEC" ] . ToString ( ) ;
di . Manufactory = ds . Tables [ 0 ] . Rows [ i ] [ "MANUFACTORY" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "MANUFACTORY" ] . ToString ( ) ;
chkRStock . DrugInfo = di ;
cRecordStockList . Add ( chkRStock ) ;
}
}
}
catch ( Exception ex )
{
logger . Info ( $"CheckRecordDetailInfo异常——{ex.Message}" ) ;
}
}
return cRecordStockList ;
}
/// <summary>
/// 药品列表
/// </summary>
/// <param name="searchCode"></param>
/// <param name="searchValue"></param>
/// <param name="pageNum"></param>
/// <param name="pageSize"></param>
/// <param name="totalcount"></param>
/// <returns></returns>
public List < DrugInfo > DrugListInfo ( string searchCode , string searchValue , int pageNum , int pageSize , ref int totalcount )
{
List < DrugInfo > diList = new List < DrugInfo > ( ) ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
string countSql = $@"SELECT COUNT(1) FROM drug_info WHERE 1=1 " ;
switch ( searchCode )
{
case "DrugId" :
countSql + = $" AND (drug_id like concat('%{searchValue}%')) " ;
break ;
case "DrugName" :
countSql + = $" AND (drug_name like concat('%{searchValue}%')) " ;
break ;
case "PyCode" :
countSql + = $" AND (py_code like concat('%{searchValue}%')) " ;
break ;
case "DrugBarcode" :
countSql + = $" AND (drug_barcode like concat('%{searchValue}%')) " ;
break ;
}
MySqlCommand cmd = new MySqlCommand ( countSql , con ) ;
totalcount = Convert . ToInt32 ( cmd . ExecuteScalar ( ) ) ;
pageNum = ( pageNum - 1 ) * pageSize ;
string strSql = $ @ "SELECT DRUG_ID,DRUG_NAME,DRUG_BRAND_NAME,DRUG_SPEC,DOSAGE,PY_CODE,DRUG_BARCODE,
PACK_UNIT , max_stock FROM drug_info WHERE 1 = 1 ";
switch ( searchCode )
{
case "DrugId" :
strSql + = $" AND (drug_id like concat('%{searchValue}%')) " ;
break ;
case "DrugName" :
strSql + = $" AND (drug_name like concat('%{searchValue}%')) " ;
break ;
case "PyCode" :
strSql + = $" AND (py_code like concat('%{searchValue}%')) " ;
break ;
case "DrugBarcode" :
strSql + = $" AND (drug_barcode like concat('%{searchValue}%')) " ;
break ;
}
strSql + = $" LIMIT {pageNum},{pageSize}" ;
MySqlDataAdapter dataAdapter = new MySqlDataAdapter ( strSql , con ) ;
DataSet dataSet = new DataSet ( ) ;
dataAdapter . Fill ( dataSet ) ;
if ( dataSet ! = null & & dataSet . Tables [ 0 ] ! = null & & dataSet . Tables [ 0 ] . Rows . Count > 0 )
{
for ( int i = 0 ; i < dataSet . Tables [ 0 ] . Rows . Count ; i + + )
{
DrugInfo di = new DrugInfo ( ) ;
di . DrugId = dataSet . Tables [ 0 ] . Rows [ i ] [ "DRUG_ID" ] . ToString ( ) ;
di . DrugName = dataSet . Tables [ 0 ] . Rows [ i ] [ "DRUG_NAME" ] . ToString ( ) ;
di . DrugBrandname = dataSet . Tables [ 0 ] . Rows [ i ] [ "DRUG_BRAND_NAME" ] is DBNull ? "" : dataSet . Tables [ 0 ] . Rows [ i ] [ "DRUG_BRAND_NAME" ] . ToString ( ) ;
di . DrugSpec = dataSet . Tables [ 0 ] . Rows [ i ] [ "DRUG_SPEC" ] . ToString ( ) ;
di . Dosage = dataSet . Tables [ 0 ] . Rows [ i ] [ "DOSAGE" ] is DBNull ? "" : dataSet . Tables [ 0 ] . Rows [ i ] [ "DOSAGE" ] . ToString ( ) ;
di . PyCode = dataSet . Tables [ 0 ] . Rows [ i ] [ "PY_CODE" ] is DBNull ? "" : dataSet . Tables [ 0 ] . Rows [ i ] [ "PY_CODE" ] . ToString ( ) ;
di . DrugBarcode = dataSet . Tables [ 0 ] . Rows [ i ] [ "DRUG_BARCODE" ] is DBNull ? "" : dataSet . Tables [ 0 ] . Rows [ i ] [ "DRUG_BARCODE" ] . ToString ( ) ;
di . PackUnit = dataSet . Tables [ 0 ] . Rows [ i ] [ "PACK_UNIT" ] is DBNull ? "" : dataSet . Tables [ 0 ] . Rows [ i ] [ "PACK_UNIT" ] . ToString ( ) ;
di . MaxStock = dataSet . Tables [ 0 ] . Rows [ i ] [ "max_stock" ] is DBNull ? 0 : Convert . ToInt32 ( dataSet . Tables [ 0 ] . Rows [ i ] [ "max_stock" ] ) ;
diList . Add ( di ) ;
}
}
}
catch ( Exception ex )
{
logger . Info ( $"DrugListInfo异常——{ex.Message}" ) ;
}
}
return diList ;
}
/// <summary>
/// 修改药品信息
/// </summary>
/// <param name="drug"></param>
/// <returns></returns>
public bool DrugListEdit ( DrugInfo drug )
{
bool bFlag = false ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
string strSql = $ @ "UPDATE DRUG_INFO SET DRUG_NAME='{drug.DrugName}',MANUFACTORY='{drug.Manufactory}',PY_CODE='{drug.PyCode}',pack_unit='{drug.PackUnit}',
max_stock = ' { drug . MaxStock } ' , drug_spec = ' { drug . DrugSpec } ' where drug_id = ' { drug . DrugId } ' ";
MySqlCommand cmd = new MySqlCommand ( strSql , con ) ;
int iResult = cmd . ExecuteNonQuery ( ) ;
if ( iResult > 0 )
{
bFlag = true ;
}
else
{
logger . Info ( $"DrugListEdit修改失败——{strSql}" ) ;
}
}
catch ( Exception ex )
{
logger . Info ( $"DrugListEdit异常——{ex.Message}" ) ;
}
}
return bFlag ;
}
/// <summary>
/// 根据药品ID, 批号, 效期查询药品数据
/// </summary>
/// <param name="drugId"></param>
/// <param name="manuNo"></param>
/// <param name="effDate"></param>
/// <returns></returns>
public int GetDrugManuNoByDrugIdManuNo ( string drugId , string manuNo , string effDate )
{
int iCount = 0 ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
string strSQl = @"SELECT count(1) FROM drug_manu_no WHERE DRUG_ID='{drugId}' AND MANU_NO='{manuNo}' and eff_date='{effDate}'" ;
MySqlCommand cmd = new MySqlCommand ( strSQl , con ) ;
iCount = Convert . ToInt32 ( cmd . ExecuteScalar ( ) ) ;
}
catch ( Exception ex )
{
logger . Info ( $"GetDrugManuNoByDrugIdManuNo异常——{ex.Message}" ) ;
}
}
return iCount ;
}
/// <summary>
/// 药品列表 新增批次
/// </summary>
/// <param name="drugManuNo"></param>
/// <returns></returns>
public int DrugListInsert ( DrugManuNo drugManuNo )
{
int iResult = 0 ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
string strSql = $@"INSERT INTO drug_manu_no(dmnguid,DRUG_ID,MANU_NO,MANU_DATE,EFF_DATE) VALUES('{drugManuNo.Id}','{drugManuNo.DrugId}','{drugManuNo.ManuNo}''{drugManuNo.ManuDate}''{drugManuNo.EffDate}')" ;
MySqlCommand cmd = new MySqlCommand ( strSql , con ) ;
iResult = cmd . ExecuteNonQuery ( ) ;
if ( iResult < = 0 )
{
logger . Info ( $"DrugListInsert未执行数据{strSql}" ) ;
}
}
catch ( Exception ex )
{
logger . Info ( $"DrugListInsert异常——{ex.Message}" ) ;
}
}
return iResult ;
}
/// <summary>
/// 药品列表中修改药品批次效期
/// </summary>
/// <param name="SelectedManuno"></param>
/// <returns></returns>
public int DrugListUpdate ( DrugManuNo SelectedManuno )
{
int iResult = 0 ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
string strSql = $@"UPDATE drug_manu_no SET MANU_NO='{SelectedManuno.ManuNo}',EFF_DATE='{SelectedManuno.EffDate}' WHERE DRUG_ID='{SelectedManuno.Id}'" ;
MySqlCommand cmd = new MySqlCommand ( strSql , con ) ;
iResult = cmd . ExecuteNonQuery ( ) ;
if ( iResult < = 0 )
{
logger . Info ( $"DrugListUpdate更新失败——{strSql}" ) ;
}
}
catch ( Exception ex )
{
logger . Info ( $"DrugListUpdate异常——{ex.Message}" ) ;
}
}
return iResult ;
}
/// <summary>
/// 药品列表中根据药品id查询药品批次
/// </summary>
/// <param name="drugId"></param>
/// <returns></returns>
public List < DrugManuNo > DrugListQueryManuNo ( string drugId )
{
List < DrugManuNo > drugManuNoList = new List < DrugManuNo > ( ) ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
string strSql = $"SELECT DMNGUID,DRUG_ID,MANU_NO,MANU_DATE,EFF_DATE FROM DRUG_MANU_NO WHERE DRUG_ID='{drugId}'" ;
MySqlDataAdapter dataAdapter = new MySqlDataAdapter ( strSql , con ) ;
DataSet ds = new DataSet ( ) ;
dataAdapter . Fill ( ds ) ;
if ( ds ! = null & & ds . Tables [ 0 ] ! = null & & ds . Tables [ 0 ] . Rows . Count > 0 )
{
for ( int i = 0 ; i < ds . Tables [ 0 ] . Rows . Count ; i + + )
{
DrugManuNo manuNo = new DrugManuNo ( ) ;
manuNo . Id = ds . Tables [ 0 ] . Rows [ i ] [ "DMNGUID" ] . ToString ( ) ;
manuNo . DrugId = ds . Tables [ 0 ] . Rows [ i ] [ "DRUG_ID" ] . ToString ( ) ;
manuNo . ManuNo = ds . Tables [ 0 ] . Rows [ i ] [ "MANU_NO" ] . ToString ( ) ;
manuNo . ManuDate = ds . Tables [ 0 ] . Rows [ i ] [ "MANU_DATE" ] . ToString ( ) ;
manuNo . EffDate = ds . Tables [ 0 ] . Rows [ i ] [ "EFF_DATE" ] . ToString ( ) ;
drugManuNoList . Add ( manuNo ) ;
}
}
}
catch ( Exception ex )
{
logger . Info ( $"DrugListQueryManuNo异常——{ex.Message}" ) ;
}
}
return drugManuNoList ;
}
/// <summary>
/// 药品列表页面添加药品
/// </summary>
/// <param name="drug"></param>
/// <returns></returns>
public int DrugListInsertDrug ( DrugInfo drug )
{
int iResult = 0 ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
string strSql = $ @ "INSERT INTO DRUG_INFO(DRUG_ID,DRUG_NAME,DRUG_BRAND_NAME,DRUG_SPEC,DOSAGE,PY_CODE,DRUG_BARCODE,
PACK_UNIT , max_stock ) VALUES ( ' { drug . DrugId } ',' { drug . DrugName } ',' { drug . DrugBrandname } ',' { drug . DrugSpec } ',' { drug . Dosage } ',' { drug . PyCode } ',' { drug . DrugBarcode } ',' { drug . PackUnit } ',' { drug . MaxStock } ' ) ";
MySqlCommand cmd = new MySqlCommand ( strSql , con ) ;
iResult = cmd . ExecuteNonQuery ( ) ;
if ( iResult < = 0 )
{
logger . Info ( $"DrugListInsertDrug新增失败{strSql}" ) ;
}
}
catch ( Exception ex )
{
logger . Info ( $"DrugListInsertDrug异常——{ex.Message}" ) ;
}
}
return iResult ;
}
/// <summary>
/// 交接班页面数据加载
/// </summary>
/// <param name="startDate"></param>
/// <param name="endDate"></param>
/// <param name="pageNum"></param>
/// <param name="pageSize"></param>
/// <param name="totalCount"></param>
/// <returns></returns>
public List < HkcChangeShifts > ChangeShiftsInfo ( DateTime ? startDate , DateTime ? endDate , int pageNum , int pageSize , ref int totalCount )
{
List < HkcChangeShifts > shiftsList = new List < HkcChangeShifts > ( ) ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
string countStr = $ @ "SELECT count(1) from hkc_changeshifts c LEFT JOIN user_list u on c.fromoperator=u.user_id
LEFT JOIN user_list u2 on c . fromrviewer = u2 . user_id LEFT JOIN user_list u3 on c . tooperator = u3 . user_id
left join user_list u4 on c . toreviewer = u4 . user_id where c . machine_id = ' { machine_id } ' ";
if ( startDate ! = null )
{
countStr + = $" and c.optdate>='{startDate}' " ;
}
if ( endDate ! = null )
{
countStr + = $" and c.optdate<='{endDate}' " ;
}
//countStr += " group by c.id";
MySqlCommand cmd = new MySqlCommand ( countStr , con ) ;
totalCount = Convert . ToInt32 ( cmd . ExecuteScalar ( ) ) ;
pageNum = ( pageNum - 1 ) * pageSize ;
string sqlStr = $ @ "SELECT c.id,c.OptDate,u.User_Name as fromoperator,u2.User_Name as fromrviewer,u3.User_Name as tooperator,u4.User_Name as toreviewer,
c . todate , c . State from hkc_changeshifts c LEFT JOIN user_list u on c . fromoperator = u . user_id
LEFT JOIN user_list u2 on c . fromrviewer = u2 . user_id LEFT JOIN user_list u3 on c . tooperator = u3 . user_id
left join user_list u4 on c . toreviewer = u4 . user_id where c . machine_id = ' { machine_id } ' ";
if ( startDate ! = null )
{
sqlStr + = $" and c.optdate>='{startDate}' " ;
}
if ( endDate ! = null )
{
sqlStr + = $" and c.optdate<='{endDate}' " ;
}
sqlStr + = $" group by c.id limit {pageNum},{pageSize}" ;
MySqlDataAdapter dataAdapter = new MySqlDataAdapter ( sqlStr , con ) ;
DataSet ds = new DataSet ( ) ;
dataAdapter . Fill ( ds ) ;
if ( ds ! = null & & ds . Tables [ 0 ] . Rows . Count > 0 )
{
for ( int i = 0 ; i < ds . Tables [ 0 ] . Rows . Count ; i + + )
{
HkcChangeShifts shifts = new HkcChangeShifts ( ) ;
shifts . Id = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "id" ] ) ;
shifts . OptDate = ds . Tables [ 0 ] . Rows [ i ] [ "OptDate" ] is DBNull ? null : Convert . ToDateTime ( ds . Tables [ 0 ] . Rows [ i ] [ "OptDate" ] ) ;
shifts . FromOperator = ds . Tables [ 0 ] . Rows [ i ] [ "fromoperator" ] . ToString ( ) ;
shifts . FromRviewer = ds . Tables [ 0 ] . Rows [ i ] [ "fromrviewer" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "fromrviewer" ] . ToString ( ) ;
shifts . ToOperator = ds . Tables [ 0 ] . Rows [ i ] [ "tooperator" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "tooperator" ] . ToString ( ) ;
shifts . ToReviewer = ds . Tables [ 0 ] . Rows [ i ] [ "toreviewer" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "toreviewer" ] . ToString ( ) ;
shifts . ToDate = ds . Tables [ 0 ] . Rows [ i ] [ "todate" ] is null ? null : Convert . ToDateTime ( ds . Tables [ 0 ] . Rows [ i ] [ "todate" ] ) ;
shifts . State = ds . Tables [ 0 ] . Rows [ i ] [ "State" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "State" ] . ToString ( ) ;
shiftsList . Add ( shifts ) ;
}
}
}
catch ( Exception ex )
{
logger . Info ( $"ChangeShiftsInfo异常——{ex.Message}" ) ;
}
}
return shiftsList ;
}
/// <summary>
/// 交接班弹窗-//查询发药人及审核人
/// </summary>
/// <returns></returns>
public HkcChangeShifts ChangeShiftsDialogInfo ( )
{
HkcChangeShifts shifts = new HkcChangeShifts ( ) ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
//SqlSugarHelper.Db.Queryable<HkcChangeShifts>().Single(change => change.State == "0");
string strSql = @"SELECT id,optDate,FromOperator,FromRviewer,ToOperator,ToReviewer,ToDate,State,optState,machine_id FROM hkc_changeshifts WHERE State=0" ;
MySqlDataAdapter dataAdapter = new MySqlDataAdapter ( strSql , con ) ;
DataSet ds = new DataSet ( ) ;
dataAdapter . Fill ( ds ) ;
if ( ds ! = null & & ds . Tables [ 0 ] . Rows . Count > 0 )
{
shifts . Id = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ 0 ] [ "id" ] ) ;
shifts . OptDate = ds . Tables [ 0 ] . Rows [ 0 ] [ "optDate" ] is DBNull ? null : Convert . ToDateTime ( ds . Tables [ 0 ] . Rows [ 0 ] [ "optDate" ] ) ;
shifts . FromOperator = ds . Tables [ 0 ] . Rows [ 0 ] [ "FromOperator" ] . ToString ( ) ;
shifts . FromRviewer = ds . Tables [ 0 ] . Rows [ 0 ] [ "FromRviewer" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ 0 ] [ "FromRviewer" ] . ToString ( ) ;
shifts . ToOperator = ds . Tables [ 0 ] . Rows [ 0 ] [ "ToOperator" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ 0 ] [ "ToOperator" ] . ToString ( ) ;
shifts . ToReviewer = ds . Tables [ 0 ] . Rows [ 0 ] [ "ToReviewer" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ 0 ] [ "ToReviewer" ] . ToString ( ) ;
shifts . ToDate = ds . Tables [ 0 ] . Rows [ 0 ] [ "ToDate" ] is DBNull ? null : Convert . ToDateTime ( ds . Tables [ 0 ] . Rows [ 0 ] [ "ToDate" ] ) ;
shifts . State = ds . Tables [ 0 ] . Rows [ 0 ] [ "State" ] . ToString ( ) ;
shifts . OptState = ds . Tables [ 0 ] . Rows [ 0 ] [ "optState" ] . ToString ( ) ;
shifts . Machineid = ds . Tables [ 0 ] . Rows [ 0 ] [ "machine_id" ] . ToString ( ) ;
}
}
catch ( Exception ex )
{
logger . Info ( $"ChangeShiftsDialogInfo异常——{ex.Message}" ) ;
}
}
return shifts ;
}
/// <summary>
/// 交接班 根据当前登录操作人/审核人 查询信息
/// </summary>
/// <param name="userId"></param>
/// <returns></returns>
public UserList ChangeShiftsDialogUser ( string userId )
{
UserList user = null ;
if ( ! string . IsNullOrEmpty ( userId ) )
{
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
MySqlCommand cmd = new MySqlCommand ( ) ;
string strSql = $"SELECT ID,USER_ID,USER_NAME FROM USER_LIST WHERE MACHINE_ID='{machine_id}' AND USER_ID='{userId}'" ;
try
{
MySqlDataAdapter dataAdapter = new MySqlDataAdapter ( strSql , con ) ;
DataSet ds = new DataSet ( ) ;
dataAdapter . Fill ( ds ) ;
if ( ds ! = null & & ds . Tables [ 0 ] ! = null & & ds . Tables [ 0 ] . Rows . Count > 0 )
{
user = new UserList ( ) ;
user . Id = Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ 0 ] [ "ID" ] ) ;
user . UserName = ds . Tables [ 0 ] . Rows [ 0 ] [ "USER_ID" ] . ToString ( ) ;
user . Nickname = ds . Tables [ 0 ] . Rows [ 0 ] [ "USER_NAME" ] . ToString ( ) ;
}
}
catch ( Exception ex )
{
logger . Info ( $"" ) ;
}
}
catch ( Exception ex )
{
logger . Info ( $"ChangeShiftsDialogUser异常——{ex.Message}" ) ;
}
}
}
return user ;
}
/// <summary>
/// 指纹验证登录, 根据ID获取数据
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public UserList GetUserInfo ( int id )
{
UserList user = new UserList ( ) ;
RoleDm role = new RoleDm ( ) ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
string strSql = $@"SELECT U.ID,U.USER_ID,U.USER_NAME,U.MACHINE_ROLE_ID,R.ID AS RID,R.ROLE_NAME,R.PERMISSIONS FROM USER_LIST U LEFT JOIN ROLE R ON U.MACHINE_ROLE_ID=R.ID AND U.MACHINE_ID=R.MACHINE_ID WHERE U.MACHINE_ID='{machine_id}' AND U.ID={id}" ;
MySqlDataAdapter dataAdapter = new MySqlDataAdapter ( strSql , con ) ;
DataSet ds = new DataSet ( ) ;
dataAdapter . Fill ( ds ) ;
if ( ds ! = null & & ds . Tables [ 0 ] ! = null & & ds . Tables [ 0 ] . Rows . Count > 0 )
{
user . Id = id ;
user . UserName = ds . Tables [ 0 ] . Rows [ 0 ] [ "USER_ID" ] . ToString ( ) ;
user . Nickname = ds . Tables [ 0 ] . Rows [ 0 ] [ "USER_NAME" ] . ToString ( ) ;
user . RoleId = ds . Tables [ 0 ] . Rows [ 0 ] [ "MACHINE_ROLE_ID" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ 0 ] [ "MACHINE_ROLE_ID" ] ) ;
role . Id = ds . Tables [ 0 ] . Rows [ 0 ] [ "RID" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ 0 ] [ "RID" ] ) ;
role . RoleName = ds . Tables [ 0 ] . Rows [ 0 ] [ "ROLE_NAME" ] . ToString ( ) ;
List < PremissionDm > premissionList = new List < PremissionDm > ( ) ;
premissionList = JsonConvert . DeserializeObject < List < PremissionDm > > ( ds . Tables [ 0 ] . Rows [ 0 ] [ "PERMISSIONS" ] . ToString ( ) ) ;
role . Permissions = premissionList ;
user . Role = role ;
}
}
catch ( Exception ex )
{
logger . Info ( $"GetUserInfo异常——{ex.Message}" ) ;
}
}
return user ;
}
/// <summary>
/// 根据用户名获取用户信息
/// </summary>
/// <param name="userName"></param>
/// <returns></returns>
public UserList GetUserInfoByName ( string userName )
{
UserList user = new UserList ( ) ;
RoleDm role = new RoleDm ( ) ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
string strSql = $@"SELECT U.ID,U.USER_ID,U.USER_NAME,U.MACHINE_ROLE_ID,R.ID,R.ROLE_NAME,R.PERMISSIONS,PASS_WORD FROM USER_LIST U LEFT JOIN ROLE R ON U.MACHINE_ROLE_ID=R.ID AND U.MACHINE_ID=R.MACHINE_ID WHERE U.MACHINE_ID='{machine_id}' AND U.USER_ID='{userName}'" ;
MySqlDataAdapter dataAdapter = new MySqlDataAdapter ( strSql , con ) ;
DataSet ds = new DataSet ( ) ;
dataAdapter . Fill ( ds ) ;
if ( ds ! = null & & ds . Tables [ 0 ] ! = null & & ds . Tables [ 0 ] . Rows . Count > 0 )
{
user . Id = ds . Tables [ 0 ] . Rows [ 0 ] [ "ID" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ 0 ] [ "ID" ] ) ;
user . UserName = ds . Tables [ 0 ] . Rows [ 0 ] [ "USER_ID" ] . ToString ( ) ;
user . Nickname = ds . Tables [ 0 ] . Rows [ 0 ] [ "USER_NAME" ] . ToString ( ) ;
user . RoleId = ds . Tables [ 0 ] . Rows [ 0 ] [ "MACHINE_ROLE_ID" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ 0 ] [ "MACHINE_ROLE_ID" ] ) ;
user . PassWord = ds . Tables [ 0 ] . Rows [ 0 ] [ "PASS_WORD" ] . ToString ( ) ;
role . Id = ds . Tables [ 0 ] . Rows [ 0 ] [ "ID" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ 0 ] [ "ID" ] ) ;
role . RoleName = ds . Tables [ 0 ] . Rows [ 0 ] [ "ROLE_NAME" ] . ToString ( ) ;
List < PremissionDm > premissionList = new List < PremissionDm > ( ) ;
premissionList = JsonConvert . DeserializeObject < List < PremissionDm > > ( ds . Tables [ 0 ] . Rows [ 0 ] [ "PERMISSIONS" ] . ToString ( ) ) ;
role . Permissions = premissionList ;
user . Role = role ;
}
}
catch ( Exception ex )
{
logger . Info ( $"GetUserInfo异常——{ex.Message}" ) ;
}
}
return user ;
}
/// <summary>
/// 交接班保存数据
/// </summary>
/// <returns></returns>
public bool ChangeShiftsSave ( string optUser , string reviewerUser , string jieOperator , string jieReviewer )
{
bool bFlag = false ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
MySqlTransaction transaction = con . BeginTransaction ( ) ;
try
{
string strSql = $@"SELECT ID,optDate,FromOperator,FromRviewer,ToOperator,ToReviewer,ToDate,State,optDate,machine_id FROM hkc_changeshifts WHERE State=0 " ;
if ( ! string . IsNullOrEmpty ( optUser ) )
{
strSql + = $" AND FromOperator='{optUser}' " ;
}
if ( ! string . IsNullOrEmpty ( reviewerUser ) )
{
strSql + = $" AND FromRviewer='{reviewerUser}'" ;
}
strSql + = " ORDER BY optState DESC" ;
MySqlDataAdapter dataAdapter = new MySqlDataAdapter ( strSql , con ) ;
DataSet ds = new DataSet ( ) ;
dataAdapter . Fill ( ds ) ;
MySqlCommand cmd = new MySqlCommand ( ) ;
cmd . Connection = con ;
cmd . Transaction = transaction ;
List < HkcChangeShifts > listHkcChangeShifts = new List < HkcChangeShifts > ( ) ;
if ( ds ! = null & & ds . Tables [ 0 ] ! = null & & ds . Tables [ 0 ] . Rows . Count > 0 )
{
//for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
HkcChangeShifts hkcChangeShifts = new HkcChangeShifts ( ) ;
hkcChangeShifts . Id = ds . Tables [ 0 ] . Rows [ 0 ] [ "ID" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ 0 ] [ "ID" ] ) ;
hkcChangeShifts . OptDate = ds . Tables [ 0 ] . Rows [ 0 ] [ "optDate" ] is DBNull ? null : Convert . ToDateTime ( ds . Tables [ 0 ] . Rows [ 0 ] [ "optDate" ] ) ;
hkcChangeShifts . FromOperator = ds . Tables [ 0 ] . Rows [ 0 ] [ "FromOperator" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ 0 ] [ "FromOperator" ] . ToString ( ) ;
hkcChangeShifts . FromRviewer = ds . Tables [ 0 ] . Rows [ 0 ] [ "FromRviewer" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ 0 ] [ "FromRviewer" ] . ToString ( ) ;
hkcChangeShifts . ToOperator = ds . Tables [ 0 ] . Rows [ 0 ] [ "ToOperator" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ 0 ] [ "ToOperator" ] . ToString ( ) ;
hkcChangeShifts . ToReviewer = ds . Tables [ 0 ] . Rows [ 0 ] [ "ToReviewer" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ 0 ] [ "ToReviewer" ] . ToString ( ) ;
hkcChangeShifts . ToDate = ds . Tables [ 0 ] . Rows [ 0 ] [ "ToDate" ] is DBNull ? null : Convert . ToDateTime ( ds . Tables [ 0 ] . Rows [ 0 ] [ "ToDate" ] ) ;
hkcChangeShifts . State = ds . Tables [ 0 ] . Rows [ 0 ] [ "State" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ 0 ] [ "State" ] . ToString ( ) ;
hkcChangeShifts . OptDate = ds . Tables [ 0 ] . Rows [ 0 ] [ "optDate" ] is DBNull ? null : Convert . ToDateTime ( ds . Tables [ 0 ] . Rows [ 0 ] [ "optDate" ] ) ;
listHkcChangeShifts . Add ( hkcChangeShifts ) ;
}
}
if ( listHkcChangeShifts ! = null & & listHkcChangeShifts . Count > 0 )
{
//存在则修改,不存在则插入一条
string updateSql = $@"UPDATE hkc_changeshifts SET ToOperator='{jieOperator}',ToReviewer='{jieReviewer}', State=1,ToDate='{DateTime.Now}' WHERE ID={listHkcChangeShifts[0].Id}" ;
cmd . CommandText = updateSql ;
cmd . Connection = con ;
int iResult = cmd . ExecuteNonQuery ( ) ;
if ( iResult < = 0 )
{
logger . Info ( $"ChangeShiftsSave无更新数据{updateSql}" ) ;
}
}
else
{
string insertSql = $ @ "INSERT INTO hkc_changeshifts(FromOperator,FromRviewer,ToOperator,ToReviewer,State,optState,optDate,machine_id)
VALUES ( ' { optUser } ',' { reviewerUser } ',' { jieOperator } ',' { jieReviewer } ' , 1 , 0 , ' { DateTime . Now } ',' { machine_id } ' ) ";
cmd . CommandText = insertSql ;
int iResult = cmd . ExecuteNonQuery ( ) ;
if ( iResult < = 0 )
{
logger . Info ( $"ChangeShiftsSave无插入数据{insertSql}" ) ;
}
}
string iSql = $@"INSERT INTO hkc_changeshifts(FromOperator,FromRviewer,State,optState,optdate,toDate,machine_id) VALUES('{jieOperator}','{jieReviewer}',0,0,'{DateTime.Now}','{DateTime.Now}','{machine_id}')" ;
cmd . CommandText = iSql ;
int iRet = cmd . ExecuteNonQuery ( ) ;
if ( iRet < = 0 )
{
logger . Info ( $"ChangeShiftsSave无插入数据{iSql}" ) ;
}
//插入交接班报表数据信息
string querySql = $ @ "SELECT drug.drug_name,drug.DRUG_SPEC,c.manu_no,d.useNum,d.getNum,sum(quantity) as surplus,
( SELECT d2 . manunoquantity FROM dm_machine_record d2 WHERE d2 . drug_id = c . drug_id and d2 . manu_no = c . manu_no AND d2 . operation_time < ' { listHkcChangeShifts [ 0 ] . OptDate } '
ORDER BY d2 . operation_time DESC , d2 . id DESC LIMIT 1 ) AS beforeNum
from channel_stock c LEFT JOIN drug_info drug on c . drug_id = drug . drug_id left JOIN ( SELECT drug_id , manu_no ,
SUM ( IF ( d1 . type = 1 , d1 . quantity , 0 ) ) AS getNum , SUM ( IF ( d1 . type = 2 , d1 . quantity , 0 ) ) AS useNum FROM dm_machine_record d1
WHERE d1 . type IN ( 1 , 2 ) AND d1 . operation_time > = ' { listHkcChangeShifts [ 0 ] . OptDate } ' and d1 . operation_time < = ' { DateTime . Now } ' and d1 . machine_id = ' { machine_id } ' GROUP BY d1 . Drug_ID , d1 . manu_no ) d
on c . drug_id = d . drug_id and c . manu_no = d . manu_no WHERE c . machine_id = ' { machine_id } ' and c . drug_id is not NULL GROUP BY c . Drug_ID , c . manu_no
UNION
SELECT drug . drug_name , drug . DRUG_SPEC , d . manu_no , d . useNum , d . getNum , sum ( quantity ) as surplus , ( SELECT d2 . manunoquantity FROM dm_machine_record d2 WHERE d2 . drug_id = d . drug_id and d2 . manu_no = d . manu_no AND d2 . operation_time < ' { listHkcChangeShifts [ 0 ] . OptDate } '
ORDER BY d2 . operation_time DESC , d2 . id DESC LIMIT 1 ) AS beforeNum from ( SELECT drug_id , manu_no , SUM ( IF ( d1 . type = 1 , d1 . quantity , 0 ) ) AS getNum , SUM ( IF ( d1 . type = 2 , d1 . quantity , 0 ) ) AS useNum FROM dm_machine_record d1
WHERE d1 . type IN ( 1 , 2 ) AND d1 . operation_time > = ' { listHkcChangeShifts [ 0 ] . OptDate } ' and d1 . operation_time < = ' { DateTime . Now } ' and d1 . machine_id = ' { machine_id } ' GROUP BY d1 . Drug_ID , d1 . manu_no ) d
LEFT JOIN drug_info drug on d . drug_id = drug . drug_id left JOIN channel_stock c on c . drug_id = d . drug_id and c . manu_no = d . manu_no AND c . machine_id = ' { machine_id } ' GROUP BY d . Drug_ID , d . manu_no ";
MySqlDataAdapter dataAdapterQuery = new MySqlDataAdapter ( querySql , con ) ;
DataSet dsQuery = new DataSet ( ) ;
dataAdapterQuery . Fill ( dsQuery ) ;
List < ShiftsReport > shiftsReports = new List < ShiftsReport > ( ) ;
if ( dsQuery ! = null & & dsQuery . Tables [ 0 ] ! = null & & dsQuery . Tables [ 0 ] . Rows . Count > 0 )
{
for ( int i = 0 ; i < dsQuery . Tables [ 0 ] . Rows . Count ; i + + )
{
ShiftsReport shiftsReport = new ShiftsReport ( ) ;
shiftsReport . DrugName = dsQuery . Tables [ 0 ] . Rows [ i ] [ "drug_name" ] . ToString ( ) ;
shiftsReport . DrugSpec = dsQuery . Tables [ 0 ] . Rows [ i ] [ "DRUG_SPEC" ] . ToString ( ) ;
shiftsReport . ManuNo = dsQuery . Tables [ 0 ] . Rows [ i ] [ "manu_no" ] . ToString ( ) ;
shiftsReport . UseNum = dsQuery . Tables [ 0 ] . Rows [ i ] [ "useNum" ] is DBNull ? null : Convert . ToInt32 ( dsQuery . Tables [ 0 ] . Rows [ i ] [ "useNum" ] ) ;
shiftsReport . GetNum = dsQuery . Tables [ 0 ] . Rows [ i ] [ "getNum" ] is DBNull ? null : Convert . ToInt32 ( dsQuery . Tables [ 0 ] . Rows [ i ] [ "getNum" ] ) ;
shiftsReport . Surplus = dsQuery . Tables [ 0 ] . Rows [ i ] [ "surplus" ] is DBNull ? null : Convert . ToInt32 ( dsQuery . Tables [ 0 ] . Rows [ i ] [ "surplus" ] ) ;
shiftsReport . BeforeNum = dsQuery . Tables [ 0 ] . Rows [ i ] [ "beforeNum" ] is DBNull ? null : Convert . ToInt32 ( dsQuery . Tables [ 0 ] . Rows [ i ] [ "beforeNum" ] ) ;
shiftsReports . Add ( shiftsReport ) ;
}
}
if ( shiftsReports ! = null & & shiftsReports . Count > 0 )
{
for ( int i = 0 ; i < shiftsReports . Count ; i + + )
{
string isSql = @ $ "INSERT INTO hkc_shiftsreport(opt_Date,drug_name,drug_spec,beforeNum,getNum,useNum,manu_no,surplus,FromOperator,FromReviewer,ToOperator,ToReviewer,machineId)
VALUES ( ' { DateTime . Now } ',' { shiftsReports [ i ] . DrugName } ',' { shiftsReports [ i ] . DrugSpec } ' , { shiftsReports [ i ] . BeforeNum ? ? 0 } , { shiftsReports [ i ] . GetNum ? ? 0 } ,
{ shiftsReports [ i ] . UseNum ? ? 0 } , ' { shiftsReports [ i ] . ManuNo } ' , { shiftsReports [ i ] . Surplus ? ? 0 } , ' { optUser } ',' { reviewerUser } ',' { jieOperator } ',' { jieReviewer } ',' { machine_id } ' ) ";
cmd . CommandText = isSql ;
int iResult = cmd . ExecuteNonQuery ( ) ;
if ( iResult < = 0 )
{
logger . Info ( $"ChangeShiftsSave插入失败——{isSql}" ) ;
}
}
}
bFlag = true ;
transaction . Commit ( ) ;
}
catch ( Exception ex )
{
transaction . Rollback ( ) ;
logger . Info ( $"ChangeShiftsSave异常——{ex.Message}" ) ;
}
}
return bFlag ;
}
/// <summary>
/// 账册页面获取数据
/// </summary>
/// <returns></returns>
public List < DrugInfo > AccountListDrugInfos ( )
{
List < DrugInfo > drugList = new List < DrugInfo > ( ) ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
string strSql = $@"SELECT DRUG_ID,DRUG_NAME,DRUG_SPEC,DOSAGE,MANUFACTORY_ID,MANUFACTORY,PY_CODE,BIG_UNIT,SMALL_UNIT,CONVERT_RATIO,DRUG_TYPE,pack_unit FROM DRUG_INFO ORDER BY drug_id " ;
MySqlDataAdapter dataAdapter = new MySqlDataAdapter ( strSql , con ) ;
DataSet ds = new DataSet ( ) ;
dataAdapter . Fill ( ds ) ;
if ( ds ! = null & & ds . Tables [ 0 ] ! = null & & ds . Tables [ 0 ] . Rows . Count > 0 )
{
for ( int i = 0 ; i < ds . Tables [ 0 ] . Rows . Count ; i + + )
{
DrugInfo di = new DrugInfo ( ) ;
di . DrugId = ds . Tables [ 0 ] . Rows [ i ] [ "DRUG_ID" ] . ToString ( ) ;
di . DrugName = ds . Tables [ 0 ] . Rows [ i ] [ "DRUG_NAME" ] . ToString ( ) ;
di . DrugSpec = ds . Tables [ 0 ] . Rows [ i ] [ "DRUG_SPEC" ] . ToString ( ) ;
di . Dosage = ds . Tables [ 0 ] . Rows [ i ] [ "DOSAGE" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "DOSAGE" ] . ToString ( ) ;
di . Manufactory = ds . Tables [ 0 ] . Rows [ i ] [ "MANUFACTORY" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "MANUFACTORY" ] . ToString ( ) ;
di . PyCode = ds . Tables [ 0 ] . Rows [ i ] [ "PY_CODE" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "PY_CODE" ] . ToString ( ) ;
di . PackUnit = ds . Tables [ 0 ] . Rows [ i ] [ "pack_unit" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "pack_unit" ] . ToString ( ) ;
string manuNoSql = $@"SELECT dmnguid,drug_id,manu_no,eff_Date FROM drug_manu_no WHERE DRUG_ID='{ds.Tables[0].Rows[i][" DRUG_ID "].ToString()}'" ;
MySqlDataAdapter dataAdapterManu = new MySqlDataAdapter ( manuNoSql , con ) ;
DataSet dsManu = new DataSet ( ) ;
dataAdapterManu . Fill ( dsManu ) ;
List < DrugManuNo > manuNoList = new List < DrugManuNo > ( ) ;
if ( dsManu ! = null & & dsManu . Tables [ 0 ] ! = null & & dsManu . Tables [ 0 ] . Rows . Count > 0 )
{
for ( int j = 0 ; j < dsManu . Tables [ 0 ] . Rows . Count ; j + + )
{
DrugManuNo manuNo = new DrugManuNo ( ) ;
manuNo . Id = dsManu . Tables [ 0 ] . Rows [ j ] [ "dmnguid" ] . ToString ( ) ;
manuNo . DrugId = dsManu . Tables [ 0 ] . Rows [ j ] [ "drug_id" ] . ToString ( ) ;
manuNo . ManuNo = dsManu . Tables [ 0 ] . Rows [ j ] [ "manu_no" ] . ToString ( ) ;
manuNo . EffDate = dsManu . Tables [ 0 ] . Rows [ j ] [ "eff_Date" ] . ToString ( ) ;
manuNoList . Add ( manuNo ) ;
}
}
di . DrugManuNos = manuNoList ;
drugList . Add ( di ) ;
}
}
}
catch ( Exception ex )
{
logger . Info ( $"AccountListInfo异常——{ex.Message}" ) ;
}
}
return drugList ;
}
/// <summary>
/// 获取账册信息
/// </summary>
/// <param name="startDate"></param>
/// <param name="endDate"></param>
/// <param name="type"></param>
/// <param name="drug_id"></param>
/// <returns></returns>
public List < AccountModel > ReportAccountBook ( DateTime ? startDate , DateTime ? endDate , int type , string drug_id = "" )
{
List < AccountModel > accountList = new List < AccountModel > ( ) ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
DateTime ? p_startDate = startDate ? ? Convert . ToDateTime ( "2010-1-1" ) ;
DateTime ? p_endDate = endDate ? ? DateTime . Now . AddDays ( 1 ) ;
string SQL = $ @ "SELECT TYPE, stockQuantity,inQuantity,outQuantity,operationTime,invoiceId,drugName,drugId,drugSpec,packUnit,dosage,manufactory,manuNo,effDate,
operatorName , reviewerName , supplierDept , receiveDept FROM
( SELECT mr . type , mr . stock_quantity AS stockQuantity , IF ( mr . type IN ( 1 , 31 ) , mr . quantity , IF ( mr . type = 4 AND mr . quantity > 0 , mr . quantity , IF ( mr . type = 5 , mr . return_quantity1 , 0 ) ) )
AS inQuantity , IF ( mr . type = 2 , mr . quantity , IF ( mr . type = 4 AND mr . quantity < 0 , ( 0 - mr . quantity ) , IF ( mr . type = 5 , mr . return_quantity2 , 0 ) ) ) AS outQuantity ,
DATE_FORMAT ( mr . operation_time , ' % m / % d ' ) AS operationTime , IF ( mr . type = 1 | | mr . type = 5 , mr . invoice_id , NULL ) AS invoiceId , di . drug_name AS drugName , di . drug_id AS drugId ,
di . drug_spec AS drugSpec , di . pack_unit AS packUnit , di . dosage AS dosage , di . manufactory AS manufactory ,
mr . manu_no AS manuNo , DATE_FORMAT ( mr . eff_date , ' % y / % m / % d ' ) AS effDate , u1 . user_name AS operatorName , u2 . user_name AS reviewerName , mr . supplierDept , mr . receiveDept FROM
dm_machine_record mr LEFT JOIN drug_info di ON mr . drug_id = di . drug_id LEFT JOIN user_list u1 ON mr . operator = u1 . id
LEFT JOIN user_list u2 ON mr . reviewer = u2 . id WHERE mr . machine_id = ' { machine_id } ' AND mr . operation_time > ' { p_startDate } '
AND mr . operation_time < ' { p_endDate } ' and IF ( mr . type = 4 AND mr . quantity = 0 , 99999 , mr . quantity ) < > 99999 ";
if ( ! string . IsNullOrEmpty ( drug_id ) )
{
SQL + = " AND mr.drug_id='" + drug_id + "' " ;
}
SQL + = " ORDER BY mr.drug_id, mr.operation_time, mr.id) AS T" ;
if ( type > 0 )
{
if ( type = = 1 )
{
SQL + = " WHERE inQuantity>0 " ;
}
if ( type = = 2 )
{
SQL + = " WHERE outQuantity>0 " ;
}
if ( type = = 5 )
{
SQL + = " WHERE type=5 " ;
}
}
MySqlDataAdapter dataAdapter = new MySqlDataAdapter ( SQL , con ) ;
DataSet ds = new DataSet ( ) ;
dataAdapter . Fill ( ds ) ;
if ( ds ! = null & & ds . Tables [ 0 ] ! = null & & ds . Tables [ 0 ] . Rows . Count > 0 )
{
for ( int i = 0 ; i < ds . Tables [ 0 ] . Rows . Count ; i + + )
{
AccountModel accountModel = new AccountModel ( ) ;
accountModel . StockQuantity = ds . Tables [ 0 ] . Rows [ i ] [ "stockQuantity" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "stockQuantity" ] ) ;
accountModel . InQuantity = ds . Tables [ 0 ] . Rows [ i ] [ "inQuantity" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "inQuantity" ] ) ;
accountModel . OutQuantity = ds . Tables [ 0 ] . Rows [ i ] [ "outQuantity" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "outQuantity" ] ) ;
accountModel . OperationTime = ds . Tables [ 0 ] . Rows [ i ] [ "operationTime" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "operationTime" ] . ToString ( ) ;
accountModel . InvoiceId = ds . Tables [ 0 ] . Rows [ i ] [ "invoiceId" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "invoiceId" ] . ToString ( ) ;
accountModel . DrugName = ds . Tables [ 0 ] . Rows [ i ] [ "drugName" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "drugName" ] . ToString ( ) ;
accountModel . DrugId = ds . Tables [ 0 ] . Rows [ i ] [ "drugId" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "drugId" ] . ToString ( ) ;
accountModel . DrugSpec = ds . Tables [ 0 ] . Rows [ i ] [ "drugSpec" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "drugSpec" ] . ToString ( ) ;
accountModel . PackUnit = ds . Tables [ 0 ] . Rows [ i ] [ "packUnit" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "packUnit" ] . ToString ( ) ;
accountModel . Dosage = ds . Tables [ 0 ] . Rows [ i ] [ "dosage" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "dosage" ] . ToString ( ) ;
accountModel . Manufactory = ds . Tables [ 0 ] . Rows [ i ] [ "manufactory" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "manufactory" ] . ToString ( ) ;
accountModel . ManuNo = ds . Tables [ 0 ] . Rows [ i ] [ "manuNo" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "manuNo" ] . ToString ( ) ;
accountModel . EffDate = ds . Tables [ 0 ] . Rows [ i ] [ "effDate" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "effDate" ] . ToString ( ) ;
accountModel . OperatorName = ds . Tables [ 0 ] . Rows [ i ] [ "operatorName" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "operatorName" ] . ToString ( ) ;
accountModel . ReviewerName = ds . Tables [ 0 ] . Rows [ i ] [ "reviewerName" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "reviewerName" ] . ToString ( ) ;
accountModel . SupplierDept = ds . Tables [ 0 ] . Rows [ i ] [ "supplierDept" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "supplierDept" ] . ToString ( ) ;
accountModel . ReceiveDept = ds . Tables [ 0 ] . Rows [ i ] [ "receiveDept" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "receiveDept" ] . ToString ( ) ;
accountList . Add ( accountModel ) ;
}
}
}
catch ( Exception ex )
{
logger . Info ( $"ReportAccountBook异常——{ex.Message}" ) ;
}
}
return accountList ;
}
/// <summary>
/// 账册-生成账册中查询需要生成账册的内容
/// </summary>
/// <returns></returns>
public List < ChannelStockCount > GetAll ( )
{
List < ChannelStockCount > countList = new List < ChannelStockCount > ( ) ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
string SQL = $ @ "SELECT CS.drug_id as DrugId,CS.manu_no as ManuNo,sum(quantity) as Quantity,CS.eff_date as EffDate,DI.drug_name as DrugName,
DI . drug_spec as DrugSpec , DI . dosage as Dosage , DI . manufactory as ManuFactory , DI . small_unit as SmallUnit , DI . pack_unit as PackUnit ,
CS . machine_id as MachineId FROM channel_stock CS
INNER JOIN drug_info DI ON CS . drug_id = DI . drug_id where CS . machine_id = ' { machine_id } ' AND quantity > 0 GROUP BY CS . drug_id ";//,CS.manu_no " ;
MySqlDataAdapter dataAdapter = new MySqlDataAdapter ( SQL , con ) ;
DataSet ds = new DataSet ( ) ;
dataAdapter . Fill ( ds ) ;
if ( ds ! = null & & ds . Tables [ 0 ] ! = null & & ds . Tables [ 0 ] . Rows . Count > 0 )
{
for ( int i = 0 ; i < ds . Tables [ 0 ] . Rows . Count ; i + + )
{
ChannelStockCount count = new ChannelStockCount ( ) ;
count . DrugId = ds . Tables [ 0 ] . Rows [ i ] [ "DrugId" ] . ToString ( ) ;
count . ManuNo = ds . Tables [ 0 ] . Rows [ i ] [ "ManuNo" ] . ToString ( ) ;
count . Quantity = ds . Tables [ 0 ] . Rows [ i ] [ "Quantity" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "Quantity" ] ) ;
count . EffDate = ds . Tables [ 0 ] . Rows [ i ] [ "EffDate" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "EffDate" ] . ToString ( ) ;
count . DrugName = ds . Tables [ 0 ] . Rows [ i ] [ "DrugName" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "DrugName" ] . ToString ( ) ;
count . DrugSpec = ds . Tables [ 0 ] . Rows [ i ] [ "DrugSpec" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "DrugSpec" ] . ToString ( ) ;
count . Dosage = ds . Tables [ 0 ] . Rows [ i ] [ "Dosage" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "Dosage" ] . ToString ( ) ;
count . ManuFactory = ds . Tables [ 0 ] . Rows [ i ] [ "ManuFactory" ] . ToString ( ) ;
count . SmallUnit = ds . Tables [ 0 ] . Rows [ i ] [ "SmallUnit" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "SmallUnit" ] . ToString ( ) ;
count . PackUnit = ds . Tables [ 0 ] . Rows [ i ] [ "PackUnit" ] is DBNull ? "" : ds . Tables [ 0 ] . Rows [ i ] [ "PackUnit" ] . ToString ( ) ;
count . MachineId = ds . Tables [ 0 ] . Rows [ i ] [ "MachineId" ] . ToString ( ) ;
countList . Add ( count ) ;
}
}
}
catch ( Exception ex )
{
logger . Info ( $"GetAll异常{ex.Message}" ) ;
}
}
return countList ;
}
//账册页面 删除已生成的日结存记录
public int DeleteAccount ( )
{
int iResult = 0 ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
string delSql = $@"DELETE FROM dm_machine_record WHERE type=5 and DATE_FORMAT(operation_time,'%Y-%m-%d')='{DateTime.Now.ToString(" yyyy - MM - dd ")}' and machine_id='{machine_id}'" ;
MySqlCommand cmd = new MySqlCommand ( delSql , con ) ;
iResult = cmd . ExecuteNonQuery ( ) ;
if ( iResult < = 0 )
{
logger . Info ( $"DeleteAccount未执行任何数据删除{delSql}" ) ;
}
}
catch ( Exception ex )
{
logger . Info ( $"DeleteAccount异常——{ex.Message}" ) ;
}
}
return iResult ;
}
/// <summary>
/// 账册页面 获取药品总库存
/// </summary>
/// <param name="DrugId"></param>
/// <returns></returns>
public int GetChannelStocksTotalQuantity ( string DrugId )
{
int channelStockQuantity = 0 ; // SqlSugarHelper.Db.Queryable<ChannelStock>().Where(cs => cs.DrugId.Equals(channelStockList[i].DrugId)).Sum(it => it.Quantity);
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
string strSql = $@"SELECT SUM(QUANTITY) FROM CHANNEL_STOCK WHERE DRUG_ID='{DrugId}'" ;
MySqlCommand cmd = new MySqlCommand ( strSql , con ) ;
channelStockQuantity = Convert . ToInt32 ( cmd . ExecuteScalar ( ) ) ;
}
catch ( Exception ex )
{
logger . Info ( $"GetChannelStocksTotalQuantity异常{ex.Message}" ) ;
}
}
return channelStockQuantity ;
}
/// <summary>
/// 账册页面保存记录
/// </summary>
/// <returns></returns>
public int AccountSavaRecord ( string drugId , int inQuantity , int outQuantity , int totalQuantity )
{
int iRestult = 0 ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
int? Operator = HomeWindowViewModel . Operator ? . Id ;
int? Reviewer = HomeWindowViewModel . Reviewer ? . Id ;
DateTime OperationTime = DateTime . Now ;
string strSql = $ @ "INSERT INTO dm_machine_record(machine_id,drawer_no,col_no,drug_id,operator,reviewer,operation_time,quantity,type,invoice_id,return_quantity1,return_quantity2,stock_quantity,manunoQuantity,supplierDept,receiveDept)
VALUES ( ' { machine_id } ' , { 0 } , { 0 } , ' { drugId } ' , { Operator } , { Reviewer } , ' { OperationTime } ' , { 0 } , { 5 } , ' 日 结 存 ' , { inQuantity } , { outQuantity } , { totalQuantity } , { 0 } , ' { string . Empty } ',' { string . Empty } ' ) ";
MySqlCommand cmd = new MySqlCommand ( strSql , con ) ;
iRestult = cmd . ExecuteNonQuery ( ) ;
if ( iRestult < = 0 )
{
logger . Info ( $"AccountSavaRecord没有插入数据{strSql}" ) ;
}
}
catch ( Exception ex )
{
logger . Info ( $"AccountSavaRecord——异常{ex.Message}" ) ;
}
}
return iRestult ;
}
#endregion
#region 系 统 设 置
public List < UserList > UserManagerInfo ( string searchValue , int pageNum , int pageSize , ref int totalCount )
{
List < UserList > userListList = new List < UserList > ( ) ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
string countSql = @"SELECT COUNT(1) FROM user_list WHERE MACHINE_ID='{machine_id}' " ;
if ( ! string . IsNullOrEmpty ( searchValue ) )
{
countSql + = $" AND USER_NAME='{searchValue}'" ;
}
MySqlCommand cmd = new MySqlCommand ( countSql , con ) ;
totalCount = Convert . ToInt32 ( cmd . ExecuteScalar ( ) ) ;
pageNum = ( pageNum - 1 ) * pageSize ;
string strSql = $@"SELECT ID,USER_ID,USER_NAME,MACHINE_ID,MACHINE_ROLE_ID FROM user_list WHERE MACHINE_ID='{machine_id}' " ;
if ( ! string . IsNullOrEmpty ( searchValue ) )
{
strSql + = $" AND USER_NAME='{searchValue}' LIMIT {pageNum},{pageSize}" ;
}
MySqlDataAdapter dataAdapter = new MySqlDataAdapter ( strSql , con ) ;
DataSet ds = new DataSet ( ) ;
dataAdapter . Fill ( ds ) ;
if ( ds ! = null & & ds . Tables [ 0 ] ! = null & & ds . Tables [ 0 ] . Rows . Count > 0 )
{
for ( int i = 0 ; i < ds . Tables [ 0 ] . Rows . Count ; i + + )
{
UserList user = new UserList ( ) ;
user . Id = ds . Tables [ 0 ] . Rows [ i ] [ "ID" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "ID" ] ) ;
user . UserName = ds . Tables [ 0 ] . Rows [ i ] [ "USER_ID" ] . ToString ( ) ;
user . Nickname = ds . Tables [ 0 ] . Rows [ i ] [ "USER_NAME" ] . ToString ( ) ;
user . MachineId = ds . Tables [ 0 ] . Rows [ i ] [ "MACHINE_ID" ] . ToString ( ) ;
user . RoleId = ds . Tables [ 0 ] . Rows [ i ] [ "MACHINE_ROLE_ID" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "MACHINE_ROLE_ID" ] ) ;
userListList . Add ( user ) ;
}
}
}
catch ( Exception ex )
{
logger . Info ( $"UserManagerInfo异常——{ex.Message}" ) ;
}
}
return userListList ;
}
/// <summary>
/// 修改用户页面获取角色
/// </summary>
/// <returns></returns>
public List < RoleDm > EditUserRoleInfo ( string SearchValue = null )
{
List < RoleDm > roleDmList = new List < RoleDm > ( ) ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
string strSql = $@"SELECT ID,ROLE_NAME,PERMISSIONS,MACHINE_ID FROM ROLE WHERE MACHINE_ID='{machine_id}'" ;
if ( ! string . IsNullOrEmpty ( SearchValue ) )
{
strSql + = $" AND ROLE_NAME LIKE '%{SearchValue}%'" ;
}
MySqlDataAdapter dataAdapter = new MySqlDataAdapter ( strSql , con ) ;
DataSet ds = new DataSet ( ) ;
dataAdapter . Fill ( ds ) ;
if ( ds ! = null & & ds . Tables [ 0 ] ! = null & & ds . Tables [ 0 ] . Rows . Count > 0 )
{
for ( int i = 0 ; i < ds . Tables [ 0 ] . Rows . Count ; i + + )
{
RoleDm roleDm = new RoleDm ( ) ;
roleDm . Id = ds . Tables [ 0 ] . Rows [ i ] [ "ID" ] is DBNull ? null : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "ID" ] ) ;
roleDm . RoleName = ds . Tables [ 0 ] . Rows [ i ] [ "ROLE_NAME" ] . ToString ( ) ;
roleDm . Permissions = JsonConvert . DeserializeObject < List < PremissionDm > > ( ds . Tables [ 0 ] . Rows [ i ] [ "PERMISSIONS" ] . ToString ( ) ) ;
roleDm . MachineId = ds . Tables [ 0 ] . Rows [ i ] [ "MACHINE_ID" ] . ToString ( ) ;
roleDmList . Add ( roleDm ) ;
}
}
}
catch ( Exception ex )
{
logger . Info ( $"EditUserRoleInfo异常——{ex.Message}" ) ;
}
}
return roleDmList ;
}
/// <summary>
/// 修改用户
/// </summary>
/// <returns></returns>
public int EditUserSaveOnlyPassWord ( int id , string passWord )
{
int iResult = 0 ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
string strSql = $@"UPDATE USER_LIST SET PASS_WORD='{passWord}' WHERE ID={id}" ;
MySqlCommand cmd = new MySqlCommand ( strSql , con ) ;
iResult = cmd . ExecuteNonQuery ( ) ;
if ( iResult < = 0 )
{
logger . Info ( $"EditUserSaveOnlyPassWord无修改{strSql}" ) ;
}
}
catch ( Exception ex )
{
logger . Info ( $"EditUserSaveOnlyPassWord异常——{ex.Message}" ) ;
}
}
return iResult ;
}
public int EditUserSaveNoPassWord ( UserList user )
{
int iResult = 0 ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
string strSql = $@"UPDATE USER_LIST SET USER_ID='{user.UserName}',USER_NAME='{user.Nickname}', user_barcode='{user.UserBarcode}',MACHINE_ROLE_ID='{user.RoleId}' WHERE ID={user.Id}" ;
MySqlCommand cmd = new MySqlCommand ( strSql , con ) ;
iResult = cmd . ExecuteNonQuery ( ) ;
if ( iResult < = 0 )
{
logger . Info ( $"EditUserSaveNoPassWord无修改{strSql}" ) ;
}
}
catch ( Exception ex )
{
logger . Info ( $"EditUserSaveNoPassWord异常——{ex.Message}" ) ;
}
}
return iResult ;
}
public int EditUserSaveAll ( UserList user )
{
int iResult = 0 ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
string strSql = $@"UPDATE USER_LIST SET USER_ID='{user.UserName}',USER_NAME='{user.Nickname}', user_barcode='{user.UserBarcode}',MACHINE_ROLE_ID='{user.RoleId}',PASS_WORD='{user.PassWord}' WHERE ID='{user.Id}'" ;
MySqlCommand cmd = new MySqlCommand ( strSql , con ) ;
iResult = cmd . ExecuteNonQuery ( ) ;
if ( iResult < = 0 )
{
logger . Info ( $"EditUserSaveNoPassWord无修改{strSql}" ) ;
}
}
catch ( Exception ex )
{
logger . Info ( $"EditUserSaveNoPassWord异常——{ex.Message}" ) ;
}
}
return iResult ;
}
// 用户管理 新增加用户
public int EditUserSaveInsertUser ( UserList user )
{
int iResult = 0 ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
string strSql = $ @ "INSERT INTO USER_LIST(USER_ID,USER_NAME,PASS_WORD,USER_BARCODE,MACHINE_ROLE_ID,MACHINE_ID)
VALUES ( ' { user . UserName } ',' { user . Nickname } ',' { user . PassWord } ',' { user . UserBarcode } ',' { user . RoleId } ',' { user . MachineId } ' ) ";
MySqlCommand cmd = new MySqlCommand ( strSql , con ) ;
iResult = cmd . ExecuteNonQuery ( ) ;
if ( iResult < = 0 )
{
logger . Info ( $"EditUserSaveInsertUser无修改{strSql}" ) ;
}
}
catch ( Exception ex )
{
logger . Info ( $"EditUserSaveInsertUser异常——{ex.Message}" ) ;
}
}
return iResult ;
}
//角色管理--根据角色名称查询记录数
public int RoleManagerGeRole ( string roleName )
{
int iResult = 0 ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
string strSql = $@"SELECT ID,ROLE_NAME FROM ROLE WHERE ROLE_NAME LIKE '{roleName}'" ;
MySqlCommand cmd = new MySqlCommand ( strSql , con ) ;
iResult = Convert . ToInt32 ( cmd . ExecuteScalar ( ) ) ;
}
catch ( Exception ex )
{
logger . Info ( $"RoleManagerGeRole异常——{ex.Message}" ) ;
}
}
return iResult ;
}
/// <summary>
/// 角色管理——新增角色
/// </summary>
/// <param name="role"></param>
/// <returns></returns>
public int RoleManagerInsert ( RoleDm role )
{
int iResult = 0 ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
string permissions = JsonConvert . SerializeObject ( role . Permissions ) ;
string strSql = $@"INSERT INTO ROLE(ROLE_NAME,CREATETIME,PERMISSIONS,MACHINE_ID) VALUES('{role.RoleName}','{DateTime.Now}','{permissions}','{role.MachineId}')" ;
MySqlCommand cmd = new MySqlCommand ( strSql , con ) ;
iResult = cmd . ExecuteNonQuery ( ) ;
if ( iResult < = 0 )
{
logger . Info ( $"RoleManagerInsert未新数据{strSql}" ) ;
}
}
catch ( Exception ex )
{
logger . Info ( $"RoleManagerInsert异常——{ex.Message}" ) ;
}
}
return iResult ;
}
/// <summary>
/// 角色管理——修改角色
/// </summary>
/// <param name="role"></param>
/// <returns></returns>
public int RoleManagerUpdateRole ( int? roleId , string permissions )
{
int iResult = 0 ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
string strSql = $@"UPDATE ROLE SET PERMISSIONS='{permissions}' WHERE ID={roleId}" ;
MySqlCommand cmd = new MySqlCommand ( strSql , con ) ;
iResult = cmd . ExecuteNonQuery ( ) ;
if ( iResult < = 0 )
{
logger . Info ( $"RoleManagerUpdateRole未修改数据{strSql}" ) ;
}
}
catch ( Exception ex )
{
logger . Info ( $"RoleManagerUpdateRole异常——{ex.Message}" ) ;
}
}
return iResult ;
}
#endregion
#region 设 备 记 录 页 面
public List < MachineRecord > MachineRecordInfo ( int type , DateTime ? startDate , DateTime ? endDate , string drugId , int pageNum , int pageSize , ref int totalCount )
{
List < MachineRecord > machineRecordList = new List < MachineRecord > ( ) ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
try
{
string countSql = $"SELECT COUNT(1) FROM DM_MACHINE_RECORD mr INNER JOIN DRUG_INFO di ON mr.drug_id=di.drug_id LEFT JOIN USER_LIST U ON mr.Operator=U.id WHERE mr.MACHINE_ID='{machine_id}'" ;
if ( type = = 3 )
{
countSql + = $" AND mr.Type in(31,32)" ;
}
else
{
countSql + = $" AND mr.type={type}" ;
}
if ( startDate ! = null )
{
countSql + = $" and operation_time>'{startDate}'" ;
}
if ( endDate ! = null )
{
countSql + = $" and operation_time<'{endDate}'" ;
}
if ( ! string . IsNullOrEmpty ( drugId ) )
{
countSql + = $" and drug_id='{drugId}'" ;
}
MySqlCommand cmd = new MySqlCommand ( countSql , con ) ;
totalCount = Convert . ToInt32 ( cmd . ExecuteScalar ( ) ) ;
pageNum = ( pageNum - 1 ) * pageSize ;
string strSql = $ @ "SELECT mr.id,mr.machine_id,mr.drug_id,mr.quantity,mr.manu_no,mr.operator,mr.reviewer,mr.operation_time,mr.eff_Date,mr.type,mr.invoice_id,mr.col_no,mr.drawer_no,mr.status,
mr . return_quantity1 , mr . return_quantity2 , mr . get_id , mr . is_destroy , mr . stock_quantity , mr . Check_Quantity , mr . manunoQuantity , mr . supplierDept , mr . receiveDept , di . drug_name , di . drug_spec , U . USER_NAME
FROM dm_machine_record mr INNER JOIN DRUG_INFO di ON mr . drug_id = di . drug_id LEFT JOIN USER_LIST U ON mr . Operator = U . id WHERE mr . MACHINE_ID = ' { machine_id } ' ";
if ( type = = 3 )
{
strSql + = $" AND mr.Type in(31,32)" ;
}
else
{
strSql + = $" AND mr.type={type}" ;
}
if ( startDate ! = null )
{
strSql + = $" and operation_time>'{startDate}'" ;
}
if ( endDate ! = null )
{
strSql + = $" and operation_time<'{endDate}'" ;
}
if ( ! string . IsNullOrEmpty ( drugId ) )
{
strSql + = $" and drug_id='{drugId}'" ;
}
strSql + = $" limit {pageNum},{pageSize}" ;
MySqlDataAdapter dataAdapter = new MySqlDataAdapter ( strSql , con ) ;
DataSet ds = new DataSet ( ) ;
dataAdapter . Fill ( ds ) ;
if ( ds ! = null & & ds . Tables [ 0 ] ! = null & & ds . Tables [ 0 ] . Rows . Count > 0 )
{
for ( int i = 0 ; i < ds . Tables [ 0 ] . Rows . Count ; i + + )
{
MachineRecord record = new MachineRecord ( ) ;
record . Id = ds . Tables [ 0 ] . Rows [ i ] [ "id" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "id" ] ) ;
record . MachineId = ds . Tables [ 0 ] . Rows [ i ] [ "machine_id" ] . ToString ( ) ;
record . DrugId = ds . Tables [ 0 ] . Rows [ i ] [ "drug_id" ] . ToString ( ) ;
record . Quantity = ds . Tables [ 0 ] . Rows [ i ] [ "quantity" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "quantity" ] ) ;
record . StockQuantity = ds . Tables [ 0 ] . Rows [ i ] [ "stock_quantity" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "stock_quantity" ] ) ;
record . CheckQuantity = ds . Tables [ 0 ] . Rows [ i ] [ "check_quantity" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "check_quantity" ] ) ;
record . ManuNo = ds . Tables [ 0 ] . Rows [ i ] [ "manu_no" ] . ToString ( ) ;
record . Operator = ds . Tables [ 0 ] . Rows [ i ] [ "operator" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "operator" ] ) ;
record . Reviewer = ds . Tables [ 0 ] . Rows [ i ] [ "reviewer" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "reviewer" ] ) ;
record . OperationTime = ds . Tables [ 0 ] . Rows [ i ] [ "operation_time" ] is DBNull ? DateTime . Now : Convert . ToDateTime ( ds . Tables [ 0 ] . Rows [ i ] [ "operation_time" ] ) ;
record . EffDate = ds . Tables [ 0 ] . Rows [ i ] [ "eff_date" ] is DBNull ? DateTime . Now : Convert . ToDateTime ( ds . Tables [ 0 ] . Rows [ i ] [ "eff_date" ] ) ;
record . Type = ds . Tables [ 0 ] . Rows [ i ] [ "type" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "type" ] ) ;
record . InvoiceId = ds . Tables [ 0 ] . Rows [ i ] [ "invoice_id" ] . ToString ( ) ;
record . ColNo = ds . Tables [ 0 ] . Rows [ i ] [ "col_no" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "col_no" ] ) ;
record . DrawerNo = ds . Tables [ 0 ] . Rows [ i ] [ "drawer_no" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "drawer_no" ] ) ;
//record.DepartmentId = ds.Tables[0].Rows[i]["department_id"] is DBNull ? "" : ds.Tables[0].Rows[i]["department_id"].ToString();
record . Status = ds . Tables [ 0 ] . Rows [ i ] [ "status" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "status" ] ) ;
record . ReturnQuantity1 = ds . Tables [ 0 ] . Rows [ i ] [ "return_quantity1" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "return_quantity1" ] ) ;
record . ReturnQuantity2 = ds . Tables [ 0 ] . Rows [ i ] [ "return_quantity2" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "return_quantity2" ] ) ;
record . GetId = ds . Tables [ 0 ] . Rows [ i ] [ "get_id" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "get_id" ] ) ;
record . IsDestroy = ds . Tables [ 0 ] . Rows [ i ] [ "is_destroy" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "is_destroy" ] ) ;
record . ManunoQuantity = ds . Tables [ 0 ] . Rows [ i ] [ "manunoQuantity" ] is DBNull ? 0 : Convert . ToInt32 ( ds . Tables [ 0 ] . Rows [ i ] [ "manunoQuantity" ] ) ;
record . SupplierDept = ds . Tables [ 0 ] . Rows [ i ] [ "supplierDept" ] . ToString ( ) ;
record . ReceiveDept = ds . Tables [ 0 ] . Rows [ i ] [ "receiveDept" ] . ToString ( ) ;
DrugInfo di = new DrugInfo ( ) ;
di . DrugName = ds . Tables [ 0 ] . Rows [ i ] [ "drug_name" ] . ToString ( ) ;
di . DrugSpec = ds . Tables [ 0 ] . Rows [ i ] [ "drug_spec" ] . ToString ( ) ;
record . DrugInfo = di ;
UserList user = new UserList ( ) ;
user . Nickname = ds . Tables [ 0 ] . Rows [ i ] [ "USER_NAME" ] . ToString ( ) ;
record . User = user ;
machineRecordList . Add ( record ) ;
}
}
}
catch ( Exception ex )
{
logger . Info ( $"MachineRecordInfo异常{ex.Message}" ) ;
}
}
return machineRecordList ;
}
/// <summary>
/// 记录页面——更新凭证号
/// </summary>
/// <param name="id"></param>
/// <param name="invoiceId"></param>
/// <returns></returns>
public bool MachineRecordSave ( List < MachineRecord > records )
{
bool bFalg = false ;
using ( MySqlConnection con = new MySqlConnection ( connStr ) )
{
con . Open ( ) ;
MySqlTransaction transaction = con . BeginTransaction ( ) ;
try
{
for ( int i = 0 ; i < records . Count ; i + + )
{
string updateSql = $@"UPDATE DM_MACHINE_RECORD SET invoice_id='{records[i].InvoiceId}' WHERE ID={records[i].Id}" ;
MySqlCommand cmd = new MySqlCommand ( updateSql , con ) ;
int iResult = cmd . ExecuteNonQuery ( ) ;
cmd . Transaction = transaction ;
if ( iResult < = 0 )
{
logger . Info ( $"MachineRecordInfo未更新数据{updateSql}" ) ;
}
else
{
bFalg = true ;
}
}
}
catch ( Exception ex )
{
logger . Info ( $"MachineRecordSave异常——{ex.Message}" ) ;
}
}
return bFalg ;
}
#endregion
}
}