4970 lines
284 KiB
C#
4970 lines
284 KiB
C#
|
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
|
|||
|
(SELECT drug_id,in_pharmacy_id,out_pharmacy_id, invoice_no as InvoiceNo, DATE_FORMAT(Invoice_Date,'%Y-%m-%d') as InvoiceDate, SUM(quantity) as quantity
|
|||
|
FROM in_out_invoice where status=0 and type!=2 and cancel_flag=0 GROUP BY invoice_no,drug_id) i
|
|||
|
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 ");
|
|||
|
sb.Append(" (SELECT drug_id,in_pharmacy_id,out_pharmacy_id, invoice_no as InvoiceNo, DATE_FORMAT(Invoice_Date,'%Y-%m-%d') as InvoiceDate, SUM(quantity) as quantity ");
|
|||
|
sb.Append(" FROM in_out_invoice where status=0 and type!=2 and cancel_flag=0 GROUP BY invoice_no,drug_id) i ");
|
|||
|
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
|
|||
|
{
|
|||
|
string sql = $@"SELECT id,in_pharmacy_id,out_pharmacy_id,storage,invoice_no,invoice_date,drug_id,drug_spec,
|
|||
|
quantity,drug_manu_no,supplier,operator,drug_eff_date FROM in_out_invoice WHERE ((((( invoice_no = '{invoiceNo}' )
|
|||
|
AND ( drug_id = '{drugId}' )) AND ( status = 0 )) AND ( type <> 2 )) AND ( cancel_flag = 0 ))";
|
|||
|
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
|
|||
|
{
|
|||
|
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}");
|
|||
|
}
|
|||
|
}
|
|||
|
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}");
|
|||
|
}
|
|||
|
}
|
|||
|
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}");
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
// 获取更新完库存后的药品库存
|
|||
|
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}");
|
|||
|
}
|
|||
|
//根据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}");
|
|||
|
}
|
|||
|
}
|
|||
|
bResult = true;
|
|||
|
transaction.Commit();
|
|||
|
}
|
|||
|
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;
|
|||
|
}
|
|||
|
string chnguid = it.Chnguid==null ? it.ChannelLst.Id : it.Chnguid;
|
|||
|
//更新数据 库存信息
|
|||
|
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;
|
|||
|
}
|
|||
|
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)
|
|||
|
VALUES({cStock.rowNo},{cStock.colNo},{manuQuantiy},'{cStock.manuNo}','{cStock.effDate}','{cStock.drugName}','{cStock.manufactory}','{cStock.drugSpec}','{cStock.packUnit}',
|
|||
|
{cStock.maxStock},'{cStock.drugId}','{cStock.MachineId}',{quantity},'{DateTime.Now.ToString()}','{operatorUser}','{reviewerUser}')";
|
|||
|
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
|
|||
|
FROM check_stock CKS INNER JOIN DRUG_INFO DI ON CKS.DRUG_ID=DI.DRUG_ID WHERE optdate='{optDate}'";
|
|||
|
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
|
|||
|
}
|
|||
|
}
|