using Dapper; using dccdc.Models; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; namespace dccdc.DAL { public class charge_refundDal { public int getCount(string key) { string sql = "select count(1) from charge_refund where 1=1"; if (!string.IsNullOrEmpty(key)) { sql += " and ()"; } using (IDbConnection conn = CommHelper.GetSqlConnection()) { return conn.ExecuteScalar(sql, new { area_name = "%" + key + "%" }); } } public List getList(int page, int pagesize, string key) { string sql = "select *,row_number() over(order by id) as rownum from charge_refund where 1=1"; if (!string.IsNullOrEmpty(key)) { sql += " and ()"; } sql = "select * from (" + sql + ") t where t.rownum>(" + page + "-1)*" + pagesize + " and rownum<=" + page + "*" + pagesize; using (IDbConnection conn = CommHelper.GetSqlConnection()) { return conn.Query(sql, new { area_name = "%" + key + "%" }).ToList(); } } public List GetAllList(string id) { using (IDbConnection conn = CommHelper.GetSqlConnection()) { string param = ""; if (id != "") { param += " and id=@id"; } string sql = "select * from charge_refund where 1=1 "; return conn.Query(sql + param, new { id = id }).ToList(); } } public List GetAllList2(string start, string end, string where) { using (IDbConnection conn = CommHelper.GetSqlConnection()) { string param = ""; if (where != "") { } string sql = "select * from charge_refund where 1=1 and tfshsj>=@start and tfshsj<=@end and tfzt='审核'"; return conn.Query(sql + param, new { start = start + " 00:00:00", end = end + " 23:59:59", where = where }).ToList(); } } public List GetChild(string pid) { using (IDbConnection conn = CommHelper.GetSqlConnection()) { string param = ""; if (pid != "") { param += " and tfsqid=@pid"; } string sql = "select * from charge_refund_detail where 1=1 "; return conn.Query(sql + param, new { pid = pid }).ToList(); } } public object save(charge_refundModel ct) { string sql = ""; if (ct.id == 0) { sql = @"INSERT INTO [dbo].[charge_refund] ([id] ,[sqdid] ,[sfbid] ,[sqrid] ,[sqrxm] ,[sqsj] ,[tfshrid] ,[tfshsj] ,[tfrid] ,[tfsj] ,[tfje] ,[jfrxm] ,[tfzt]) VALUES (@id ,@sqdid ,@sfbid ,@sqrid ,@sqrxm ,@sqsj ,@tfshrid ,@tfshsj ,@tfrid ,@tfsj ,@tfje ,@jfrxm ,@tfzt)"; } else { sql = @"UPDATE [dbo].[charge_refund] SET [id] = @id, int,> ,[sqdid] = @sqdid ,[sfbid] = @sfbid ,[sqrid] = @sqrid ,[sqrxm] = @sqrxm ,[sqsj] = @sqsj ,[tfshrid] = @tfshrid ,[tfshsj] = @tfshsj ,[tfrid] = @tfrid ,[tfsj] = @tfsj ,[tfje] = @tfje ,[jfrxm] = @jfrxm ,[tfzt] = @tfzt WHERE id=@id"; } using (IDbConnection conn = CommHelper.GetSqlConnection()) { try { int c = conn.Execute(sql, ct); if (c > 0) { return new { State = 1, Message = "保存成功!" }; } else { return new { State = 0, Message = "操作失败,请联系管理员!" }; } } catch (Exception ex) { return new { State = 0, Message = ex.Message }; } } } public int saveReturnId(charge_refundModel ct) { string sql = @"INSERT INTO [dbo].[charge_refund] ([sqdid] ,[sfbid] ,[sqrid] ,[sqrxm] ,[sqsj] ,[tfshrid] ,[tfshsj] ,[tfrid] ,[tfsj] ,[tfje] ,[jfrxm] ,[tfzt]) VALUES (@sqdid ,@sfbid ,@sqrid ,@sqrxm ,@sqsj ,@tfshrid ,@tfshsj ,@tfrid ,@tfsj ,@tfje ,@jfrxm ,@tfzt) select scope_identity()"; using (IDbConnection conn = CommHelper.GetSqlConnection()) { int id = conn.ExecuteScalar(sql,ct); return id; } } public object refund(string id, ERPUser user) { //退费申请主表 明细表 charge_refundModel result1; List result11; //收费项目主表明细表 chargeModel result2; List result22; using (IDbConnection conn = CommHelper.GetSqlConnection()) { try { result1 = conn.Query("select * from charge_refund where 1=1 and id=@id", new { id = id }).FirstOrDefault(); result11 = conn.Query("select a.*,b.chargeid from charge_refund_detail a left join vaccine b on a.ymid=b.id where 1=1 and a.tfsqid=@id", new { id = id }).ToList(); result2 = conn.Query("select * from charge where 1=1 and id=@id", new { id = result1.sfbid }).FirstOrDefault(); result22 = conn.Query("select * from charge_detail where 1=1 and chargeid=@id", new { id = result1.sfbid }).ToList(); } catch (Exception ex) { return new { State = 0, Message = ex.Message }; } } //计算 List result31 = new List(); List result32 = new List(); bool have; charge_detailModel model2; foreach (charge_detailModel model in result22) { if (model.pid > 0) continue; have = false; foreach (charge_refund_detailModel m in result11) { if (model.projectid == m.chargeid) { model2 = new charge_detailModel() { id = model.id, chargeid = 0, projectid = model.projectid, projectname = model.projectname, money = model.money, count = -m.ymsl, pid = model.pid }; result31.Add(model2); if (model.count - m.ymsl > 0) { model2 = new charge_detailModel() { id = model.id, chargeid = 0, projectid = model.projectid, projectname = model.projectname, money = model.money, count = model.count - m.ymsl, pid = model.pid }; result32.Add(model2); } have = true; break; } } if (have == false) { model2 = new charge_detailModel() { id = model.id, chargeid = 0, projectid = model.projectid, projectname = model.projectname, money = model.money, count = model.count, pid = model.pid }; result32.Add(model2); } } foreach (charge_detailModel model in result31) { foreach (charge_detailModel m in result22) { if (m.pid == model.id) { model2 = new charge_detailModel() { id = m.id, chargeid = 0, projectid = m.projectid, projectname = m.projectname, money = m.money, count = model.count, pid = m.pid }; result31.Add(model2); } } } foreach (charge_detailModel model in result32) { foreach (charge_detailModel m in result22) { if (m.pid == model.id) { model2 = new charge_detailModel() { id = m.id, chargeid = 0, projectid = m.projectid, projectname = m.projectname, money = m.money, count = model.count, pid = m.pid }; result32.Add(model2); } } } string sql1 = @"INSERT INTO [dbo].[charge] ([type] ,[type_id],[register_type],[register_num],[person_type],[person] ,[personcount] ,[company],[department],[method],[status] ,[isprint] ,[money] ,[moneydate] ,[moneyperson],[createperson] ,[createdate] ,[zfid]) VALUES (@type,@type_id ,@register_type,@register_num,@person_type ,@person,@personcount ,@company ,@department ,@method ,@status,@isprint ,@money ,@moneydate,@moneyperson,@createperson ,@createdate,@zfid)select SCOPE_IDENTITY()"; string sql2 = @"INSERT INTO [dbo].[charge_detail] ([chargeid],[projectid] ,[projectname] ,[money] ,[count] ,[pid]) VALUES (@chargeid ,@projectid,@projectname,@money,@count ,@pid)"; decimal oldprice = result2.money; using (IDbConnection conn = CommHelper.GetSqlConnection()) { IDbTransaction transaction = conn.BeginTransaction(); try { conn.Execute("update charge_refund set tfrid=@tfrid,tfsj=@tfsj,tfzt='退费' where id=@id", new {id=id, tfrid = user.ID, tfsj = DateTime.Now }, transaction); //增加退费记录 result2.money = -result1.tfje; result2.moneydate = DateTime.Now; result2.moneyperson = user.TrueName; int newid = conn.Query(sql1, result2, transaction).FirstOrDefault(); foreach (charge_detailModel mm in result31) { mm.chargeid = newid; } conn.Execute(sql2, result31, transaction); //添加剩余费用 if (oldprice - result1.tfje > 0) { result2.money = oldprice - result1.tfje; newid = conn.Query(sql1, result2, transaction).FirstOrDefault(); foreach (charge_detailModel mm in result32) { mm.chargeid = newid; } conn.Execute(sql2, result32, transaction); } transaction.Commit(); //transaction.Rollback(); return new { State = 1, Message = "退费成功" }; } catch (Exception ex) { transaction.Rollback(); return new { State = 0, Message = ex.Message }; } } } } }