RequisitionManager.cs 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. using Sugar.Enties;
  2. using SqlSugar;
  3. using System;
  4. using System.Collections.Generic;
  5. using NLog;
  6. using System.Data;
  7. using WebAPIBase.Utils;
  8. public class RequisitionManager : DbContext<Requisition>
  9. {
  10. private static Logger logger = NLog.LogManager.GetCurrentClassLogger();
  11. //当前类已经继承了 DbContext增、删、查、改的方法
  12. //这里面写的代码不会给覆盖,如果要重新生成请删除 RequisitionManager.cs
  13. /// <summary>
  14. /// 签证申请单插入
  15. /// </summary>
  16. /// <param name="requisition"></param>
  17. /// <param name="list"></param>
  18. /// <returns></returns>
  19. public string InsertRequisition(Requisition requisition, List<RequisitionContract> list)
  20. {
  21. try
  22. {
  23. string requisitionCode = "";
  24. Db.BeginTran();
  25. var sql = string.Format("declare @value varchar(50);exec sp_get_syscode 'RequisitionCode', @value output;select @value;");
  26. requisitionCode = Db.Ado.GetString(sql);
  27. //写事务代码
  28. requisition.RequisitionCode = requisitionCode;
  29. requisition.TotalEstimateCash = 0; //暂估金额总额
  30. var row2 = Db.Insertable(requisition).IgnoreColumns(it => new { it.TimeStamp }).ExecuteCommand();
  31. logger.Info($"row2:{row2}");
  32. foreach (var item in list)
  33. {
  34. item.RequisitionCode = requisition.RequisitionCode;
  35. var requisitionContractCode = Db.Ado.GetScalar(string.Format(" SELECT RequisitionContractCode FROM RequisitionContract WHERE RequisitionCode='{0}' and ContractCode='{1}'", item.RequisitionCode, item.ContractCode));
  36. if (requisitionContractCode == null)
  37. {
  38. var row3 = Db.Insertable<RequisitionContract>(item).ExecuteCommand();
  39. logger.Info($"row3:{row3}");
  40. requisition.TotalEstimateCash += item.EstimateCash;
  41. }
  42. else
  43. {
  44. var row4 = Db.Deleteable<RequisitionContract>(requisitionContractCode).ExecuteCommand();
  45. logger.Info($"row4:{row4}");
  46. var row5 = Db.Insertable<RequisitionContract>(item).ExecuteCommand();
  47. logger.Info($"row5:{row5}");
  48. requisition.TotalEstimateCash += item.EstimateCash;
  49. }
  50. }
  51. sql = string.Format("update Requisition set TotalEstimateCash={0} where RequisitionCode='{1}'", requisition.TotalEstimateCash, requisitionCode);
  52. var row1 = Db.Ado.ExecuteCommand(sql);
  53. logger.Info($"row1:{row1}");
  54. Db.CommitTran();
  55. return requisitionCode;
  56. }
  57. catch (Exception ex)
  58. {
  59. Db.RollbackTran();
  60. logger.Error(ex);
  61. throw;
  62. }
  63. }
  64. /// <summary>
  65. /// 更新签证申请单
  66. /// </summary>
  67. /// <param name="requisition"></param>
  68. /// <param name="list"></param>
  69. /// <returns></returns>
  70. public string UpdateRequisition(Requisition requisition, List<RequisitionContract> list)
  71. {
  72. try
  73. {
  74. Db.BeginTran();
  75. var sql = $"UPDATE dbo.Requisition SET RequisitionName='{requisition.RequisitionName}',RequisitionDate='{requisition.RequisitionDate}',ChangeType='{requisition.ChangeType}',RequisitionReason='{requisition.RequisitionReason}',Remark='{requisition.Remark}' WHERE RequisitionCode='{requisition.RequisitionCode}'";
  76. requisition.TotalEstimateCash = 0; //暂估金额总额
  77. var row2 = Db.Ado.ExecuteCommand(sql); //更新签证申请单表
  78. logger.Info($"row2:{row2}");
  79. Db.Ado.ExecuteCommand($"delete from RequisitionContract where RequisitionCode='{requisition.RequisitionCode}'");
  80. foreach (var item in list)
  81. {
  82. item.RequisitionCode = requisition.RequisitionCode;
  83. var requisitionContractCode = Db.Ado.GetScalar(string.Format(" SELECT RequisitionContractCode FROM RequisitionContract WHERE RequisitionCode='{0}' and ContractCode='{1}'", item.RequisitionCode, item.ContractCode));
  84. if (requisitionContractCode == null)
  85. {
  86. var row3 = Db.Insertable<RequisitionContract>(item).ExecuteCommand();
  87. logger.Info($"row3:{row3}");
  88. requisition.TotalEstimateCash += item.EstimateCash;
  89. }
  90. else
  91. {
  92. var row4 = Db.Deleteable<RequisitionContract>(requisitionContractCode).ExecuteCommand();
  93. logger.Info($"row4:{row4}");
  94. var row5 = Db.Insertable<RequisitionContract>(item).ExecuteCommand();
  95. logger.Info($"row5:{row5}");
  96. requisition.TotalEstimateCash += item.EstimateCash;
  97. }
  98. }
  99. sql = string.Format("update Requisition set TotalEstimateCash={0} where RequisitionCode='{1}'", requisition.TotalEstimateCash, requisition.RequisitionCode);
  100. var row1 = Db.Ado.ExecuteCommand(sql);
  101. logger.Info($"row1:{row1}");
  102. Db.CommitTran();
  103. return requisition.RequisitionCode;
  104. }
  105. catch (Exception ex)
  106. {
  107. Db.RollbackTran();
  108. logger.Error(ex);
  109. throw;
  110. }
  111. }
  112. /// <summary>
  113. /// 根据项目代码获取关联合同列表
  114. /// </summary>
  115. /// <param name="projectCode"></param>
  116. /// <returns></returns>
  117. public List<V_ContractPayMoney> GetRelationContract(string projectCode, string search)
  118. {
  119. List<V_ContractPayMoney> list;
  120. if (string.IsNullOrEmpty(search))
  121. {
  122. list = Db.Queryable<V_ContractPayMoney>().Where(m => m.ProjectCode == projectCode && m.Status == 0).OrderBy("contractid desc").Take(20).ToList();
  123. }
  124. else
  125. {
  126. list = Db.Queryable<V_ContractPayMoney>().Where(m => (m.ContractID.Contains(search) || m.ContractName.Contains(search)) && m.ProjectCode == projectCode && m.Status == 0).OrderBy(m => m.ContractID, OrderByType.Desc).Take(20).ToList();
  127. }
  128. return list;
  129. }
  130. /// <summary>
  131. /// 获取签证申请单列表
  132. /// </summary>
  133. /// <param name="where"></param>
  134. /// <returns></returns>
  135. public List<Requisition> GetRequisitionList(string where)
  136. {
  137. if (where.IsNullOrEmpty())
  138. {
  139. where = "1=1";
  140. }
  141. var sql = $"select * from Requisition where {where} order by RequisitionCode desc";
  142. var list = Db.Queryable<Requisition>().Where(where).OrderBy("RequisitionCode desc").ToList();
  143. return list;
  144. }
  145. /// <summary>
  146. /// 根据签证申请单编号获取单一签证申请单实例
  147. /// </summary>
  148. /// <param name="requisitionCode"></param>
  149. /// <returns></returns>
  150. public Requisition GetRequisition(string requisitionCode)
  151. {
  152. var entity = Db.Queryable<Requisition>().First(m => m.RequisitionCode == requisitionCode);
  153. return entity;
  154. }
  155. /// <summary>
  156. /// 获取关联合同
  157. /// </summary>
  158. /// <param name="requisitionCode"></param>
  159. /// <returns></returns>
  160. public List<RequisitionContract> GetRequisitionContracts(string requisitionCode)
  161. {
  162. var list = Db.Queryable<RequisitionContract>().Where(m => m.RequisitionCode == requisitionCode).ToList();
  163. return list;
  164. }
  165. /// <summary>
  166. /// 获取签证申请单附件
  167. /// </summary>
  168. /// <param name="requisitionCode"></param>
  169. /// <returns></returns>
  170. public List<AttachMent> GetAttachMents(string requisitionCode, string attachMentType)
  171. {
  172. var list = Db.Queryable<AttachMent>().Where(m => m.MasterCode == requisitionCode && m.AttachMentType == attachMentType).ToList();
  173. return list;
  174. }
  175. /// <summary>
  176. /// 签证申请关联合同表和合同表联合查询,返回一个匿名对象列表
  177. /// </summary>
  178. /// <param name="requisitionCode"></param>
  179. /// <returns></returns>
  180. public List<RelationContractDTO> GetRelationContracts(string requisitionCode)
  181. {
  182. string sql = $"SELECT a.ContractCode, a.ContractID,a.ContractName,b.EstimateCash FROM dbo.Contract a INNER JOIN RequisitionContract b ON a.ContractCode=b.ContractCode WHERE b.RequisitionCode='{requisitionCode}'";
  183. var list = Db.Ado.SqlQuery<RelationContractDTO>(sql);
  184. return list;
  185. }
  186. /// <summary>
  187. /// 根据项目代码和签证申请单号获取相应的申请单关联合同
  188. /// </summary>
  189. /// <param name="projectCode"></param>
  190. /// <param name="requisitionCode"></param>
  191. /// <returns></returns>
  192. public List<Contract> GetRelationRequistionContract(string projectCode, string requisitionCode)
  193. {
  194. var sql = $"select * from Contract where Status=0 and ProjectCode = '{projectCode}' and ContractCode in ( select ContractCode from RequisitionContract where RequisitionCode='{requisitionCode}' ) Order By ContractID DESC ";
  195. var list = Db.Ado.SqlQuery<Contract>(sql);
  196. return list;
  197. }
  198. }