FundPactUsedDetailDAL.cs 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Data;
  6. using CoreFS.CA06;
  7. using DbHelp = Core.StlMes.Client.Sale.DbHelp;
  8. namespace Core.StlMes.Client.Sale.SaleFundMgt.FundDAL.FundPactAccountDAL
  9. {
  10. /// <summary>
  11. /// 合同资金使用,主要包括下车,装车,结算等明细记录
  12. /// 合同资金变化明细记录表
  13. /// </summary>
  14. public class FundPactUsedDetailDAL:BaseDAL.BaseDAL
  15. {
  16. public FundPactUsedDetailDAL(OpeBase ob)
  17. : base(ob)
  18. {
  19. }
  20. private const string SQL_STR_QUERY = @"select trans_seq,
  21. trans_type,
  22. balancesubject,
  23. buyercode,
  24. secondaccount,
  25. pactno,
  26. askplan_id,
  27. weight,
  28. round(money,3) money,
  29. round(askplan_money,3) askplan_money,
  30. round(trans_money,3) trans_money,
  31. trans_time,
  32. ismoneyvalid,
  33. trans_person,
  34. remark,
  35. updatetime
  36. from
  37. sel_fund_pact_fundusedetail a where 1 = 1 {0}";
  38. private const string SQL_STR_INSERT = @" insert into sel_fund_pact_fundusedetail(
  39. trans_seq,
  40. trans_type,
  41. balancesubject,
  42. buyercode,
  43. secondaccount,
  44. pactno,
  45. askplan_id,
  46. weight,
  47. money,
  48. askplan_money,
  49. trans_money,
  50. trans_time,
  51. ismoneyvalid,
  52. trans_person,
  53. remark,
  54. updatetime)
  55. values('{0}','{1}','{2}','{3}','{4}','{5}','{6}',{7},{8},{9},{10},sysdate,'{12}','{13}','{14}',
  56. sysdate)";
  57. private const string SQL_STR_DELETE = @"delete from sel_fund_pact_fundusedetail where 1 = 1 and trans_seq = '{0}' ";
  58. private const string SQL_STR_UPDATEPACTMONEYTOUNVALID = @" update sel_fund_pact_fundusedetail set ismoneyvalid = '1' where BALANCESUBJECT = '{0}'
  59. and BUYERCODE = '{1}' and SECONDACCOUNT = '{2}' and pactno = '{3}' and TRANS_TYPE = '{4}' ";
  60. private const string SQL_STR_UPDATEDLIVTOUNVALID = @" update sel_fund_pact_fundusedetail set ismoneyvalid = '1' where BALANCESUBJECT = '{0}'
  61. and BUYERCODE = '{1}' and SECONDACCOUNT = '{2}' and pactno = '{3}' and askplan_id = '{4}' and TRANS_TYPE = '{5}' ";
  62. public DataSet GetSelFundPactFundUsedDetail(string sqlConditon,Boolean isSetCaption)
  63. {
  64. string sqlStr = string.Format(SQL_STR_QUERY,sqlConditon);
  65. DataSet ds = base.ExecuteReaderForSaleFund(sqlStr);
  66. base.SetDataSetCaption(ref ds,base.GetColumnNameAndCaption());
  67. return ds;
  68. }
  69. public DataSet GetSelFundPactFundUsedDetail(string sqlConditon)
  70. {
  71. string sqlStr = string.Format(SQL_STR_QUERY, sqlConditon);
  72. DataSet ds = base.ExecuteReaderForSaleFund(sqlStr);
  73. base.SetDataSetCaption(ref ds, base.GetColumnNameAndCaption());
  74. return ds;
  75. }
  76. /// <summary>
  77. /// 通过结算单位,客户单位,二级单位,合同单位获取其信息
  78. /// </summary>
  79. /// <param name="acct"></param>
  80. /// <returns></returns>
  81. public DataSet GetSelFundPactFundUsedDetailByBalAndBuyercodeAndSecAccountAndPactno(Model.SEL_FUND_PACT_FUNDUSEDETAIL acct)
  82. {
  83. string err = "";
  84. if (!Model.SEL_FUND_PACT_FUNDUSEDETAIL.IsReasonable(acct, out err))
  85. {
  86. return null;
  87. }
  88. return
  89. GetSelFundPactFundUsedDetail
  90. (base.GetSqlConditon(acct.BALANCESUBJECT, acct.BUYERCODE, acct.SECONDACCOUNT, acct.PACTNO));
  91. }
  92. /// <summary>
  93. /// 通过结算单位和合同号返回信息,原则上一个结算单位的合同号是唯一的
  94. /// </summary>
  95. /// <param name="balancesubject"></param>
  96. /// <param name="pactno"></param>
  97. /// <returns></returns>
  98. public DataSet GetSelFundPactFundUsedDetailByBalAndPactno(string balancesubject, string pactno)
  99. {
  100. return GetSelFundPactFundUsedDetail(base.GetSqlConditon(balancesubject,pactno));
  101. }
  102. /// <summary>
  103. /// 通过结算单位,客户编码,出库指示号获取其现有的有效出库信息
  104. /// </summary>
  105. /// <param name="bal"></param>
  106. /// <param name="buyercode"></param>
  107. /// <param name="askplanId"></param>
  108. /// <returns></returns>
  109. private List<Model.SEL_FUND_PACT_FUNDUSEDETAIL> GetSelFundPctUsedByBalanceAndBuyercodeAndAskplanId(string bal,string buyercode,string askplanId,string delivtype)
  110. {
  111. try
  112. {
  113. string sqlCondtion = string.Format(" and balancesubject = '{0}' and buyercode = '{1}' and askplan_id = '{2}' and ismoneyvalid = '0' and trans_type = '{3}'", bal, buyercode, askplanId, delivtype);
  114. return Model.SEL_FUND_PACT_FUNDUSEDETAIL.GetSelFundPactFundUsedDetailList(GetSelFundPactFundUsedDetail(sqlCondtion));
  115. }
  116. catch
  117. {
  118. return null;
  119. }
  120. }
  121. /// <summary>
  122. /// 通过结算单位,客户编码,出库指示号获取其现有的有效出库信息
  123. /// </summary>
  124. /// <param name="bal"></param>
  125. /// <param name="buyercode"></param>
  126. /// <param name="askplanId"></param>
  127. /// <returns></returns>
  128. public List<Model.SEL_FUND_PACT_FUNDUSEDETAIL> GetSelFundPctUsedDelivByBalanceAndBuyercodeAndAskplanId(string bal, string buyercode, string askplanId)
  129. {
  130. return GetSelFundPctUsedByBalanceAndBuyercodeAndAskplanId(bal,buyercode,askplanId,FundVariable.FundConstVariable._transTypePactDeliver);
  131. }
  132. /// <summary>
  133. /// 通过结算单位,客户编码,出库指示号获取其现有的有效装车信息
  134. /// </summary>
  135. /// <param name="bal"></param>
  136. /// <param name="buyercode"></param>
  137. /// <param name="askplanId"></param>
  138. /// <returns></returns>
  139. public List<Model.SEL_FUND_PACT_FUNDUSEDETAIL> GetSelFundPctUsedLoadByBalanceAndBuyercodeAndAskplanId(string bal, string buyercode, string askplanId)
  140. {
  141. return GetSelFundPctUsedByBalanceAndBuyercodeAndAskplanId(bal, buyercode, askplanId, FundVariable.FundConstVariable._transTypePactLoad);
  142. }
  143. /// <summary>
  144. /// 检查一个计划单号是否存在
  145. /// </summary>
  146. /// <param name="balancesubject"></param>
  147. /// <param name="askPlanid"></param>
  148. /// <returns></returns>
  149. public Boolean IsAskplanIdExists(string balancesubject, string askPlanid)
  150. {
  151. string sqlCondition = string.Format(" and balancesubject = '{0}' and askplan_id = '{1}' and rownum = 1 ",balancesubject,askPlanid);
  152. DataSet ds = GetSelFundPactFundUsedDetail(sqlCondition);
  153. return (Util.DataSetUtil.Count(ds) > 0) ? true : false;
  154. }
  155. /// <summary>
  156. /// 通过类型,loadType ,装车,下车,结算等,检查一个车号状态
  157. /// 保证是有效类型
  158. /// </summary>
  159. /// <param name="balancesubject"></param>
  160. /// <param name="askPlanid"></param>
  161. /// <param name="loadType"></param>
  162. /// <returns></returns>
  163. public Boolean IsAskplanIdExists(string balancesubject, string askPlanid,string loadType)
  164. {
  165. string sqlCondition = string.Format(" and ismoneyvalid = '0' and balancesubject = '{0}' and askplan_id = '{1}' and TRANS_TYPE = '{2}' and rownum = 1 ", balancesubject, askPlanid, loadType);
  166. DataSet ds = GetSelFundPactFundUsedDetail(sqlCondition);
  167. return (Util.DataSetUtil.Count(ds) > 0) ? true : false;
  168. }
  169. /// <summary>
  170. /// 检查一个车是否有装车冲减
  171. /// </summary>
  172. /// <param name="balancesubject"></param>
  173. /// <param name="askPlanid"></param>
  174. /// <param name="loadType"></param>
  175. /// <returns></returns>
  176. public Boolean IsAskplanIdExistsLoad(string balancesubject, string askPlanid)
  177. {
  178. return IsAskplanIdExists(balancesubject, askPlanid, FundVariable.FundConstVariable._transTypePactLoad);
  179. }
  180. /// <summary>
  181. /// 检查一个车是否有结算冲减
  182. /// </summary>
  183. /// <param name="balancesubject"></param>
  184. /// <param name="askPlanid"></param>
  185. /// <returns></returns>
  186. public Boolean IsAskplanIdExistsInvoince(string balancesubject, string askPlanid)
  187. {
  188. return IsAskplanIdExists(balancesubject, askPlanid, FundVariable.FundConstVariable._transTypePactInvoice);
  189. }
  190. /// <summary>
  191. /// 通过结算单位,客户编码,出库指示号获取其现有的有效结算信息
  192. /// </summary>
  193. /// <param name="bal"></param>
  194. /// <param name="buyercode"></param>
  195. /// <param name="askplanId"></param>
  196. /// <returns></returns>
  197. public List<Model.SEL_FUND_PACT_FUNDUSEDETAIL> GetSelFundPctUsedInvoiceByBalanceAndBuyercodeAndAskplanId(string bal, string buyercode, string askplanId)
  198. {
  199. return GetSelFundPctUsedByBalanceAndBuyercodeAndAskplanId(bal, buyercode, askplanId, FundVariable.FundConstVariable._transTypePactInvoice);
  200. }
  201. private string GetInsertSqlStr(Model.SEL_FUND_PACT_FUNDUSEDETAIL acct, out string err)
  202. {
  203. err = "";
  204. if (!Model.SEL_FUND_PACT_FUNDUSEDETAIL.IsReasonable(acct, out err))
  205. {
  206. return "";
  207. }
  208. try
  209. {
  210. string SQL_INSERT = string.Format(SQL_STR_INSERT,
  211. acct.TRANS_SEQ,
  212. acct.TRANS_TYPE,
  213. acct.BALANCESUBJECT,
  214. acct.BUYERCODE,
  215. acct.SECONDACCOUNT,
  216. acct.PACTNO,
  217. acct.ASKPLAN_ID,
  218. acct.WEIGHT,
  219. acct.MONEY,
  220. acct.ASKPLAN_MONEY,
  221. acct.TRANS_MONEY,
  222. // acct.TRANS_TIME,
  223. acct.ISMONEYVALID,
  224. acct.TRANS_PERSON,
  225. acct.REMARK);
  226. return SQL_INSERT;
  227. }
  228. catch
  229. {
  230. return "";
  231. }
  232. }
  233. /// <summary>
  234. /// 写入记录,不带事务处理
  235. /// </summary>
  236. /// <param name="acct"></param>
  237. /// <param name="err"></param>
  238. public void Insert(Model.SEL_FUND_PACT_FUNDUSEDETAIL acct, out string err)
  239. {
  240. err = "";
  241. string SQL_INSERT = GetInsertSqlStr(acct,out err);
  242. if (err.Length > 0)
  243. return;
  244. base.ExecuteNoReaderForSaleFund(SQL_INSERT,out err);
  245. }
  246. /// <summary>
  247. /// 写记录,带事务
  248. /// </summary>
  249. /// <param name="acct"></param>
  250. /// <param name="transaction"></param>
  251. public void Insert(Model.SEL_FUND_PACT_FUNDUSEDETAIL acct, DbHelp.DbTransaction transaction)
  252. {
  253. string err = "";
  254. string SQL_INSERT = GetInsertSqlStr(acct, out err);
  255. if (err.Length > 0)
  256. {
  257. transaction.ErrMsg = err;
  258. return;
  259. }
  260. base.ExecuteNoReaderForSaleFund(SQL_INSERT, transaction);
  261. }
  262. /// <summary>
  263. /// 删除一个明细
  264. /// </summary>
  265. /// <param name="busiseq"></param>
  266. public void Delete(string busiseq)
  267. {
  268. string sqlStr = string.Format(SQL_STR_DELETE,busiseq);
  269. base.ExecuteNoReaderForSaleFund(sqlStr);
  270. }
  271. /// <summary>
  272. /// 针对多次有合同生效扣款的情况,将原来的先设置未无效
  273. /// </summary>
  274. /// <param name="balancesubject"></param>
  275. /// <param name="secondlevelact"></param>
  276. /// <param name="pactno"></param>
  277. public void UpdatePactEffectMoneyToUnValid(string balancesubject,string buyercode,string secondlevelact,string pactno,out string errMsg)
  278. {
  279. errMsg = "";
  280. string sqlstr = string.Format(SQL_STR_UPDATEPACTMONEYTOUNVALID, balancesubject, buyercode, secondlevelact, pactno, FundVariable.FundConstVariable._transTypePactEffect);
  281. base.ExecuteNoReaderForSaleFund(sqlstr,out errMsg);
  282. }
  283. public void UpdatePactEffectMoneyToUnValid(string balancesubject, string buyercode, string secondlevelact, string pactno, DbHelp.DbTransaction transaction)
  284. {
  285. string sqlstr = string.Format(SQL_STR_UPDATEPACTMONEYTOUNVALID, balancesubject, buyercode, secondlevelact, pactno, FundVariable.FundConstVariable._transTypePactEffect);
  286. base.ExecuteNoReaderForSaleFund(sqlstr, transaction);
  287. }
  288. /// <summary>
  289. /// 对同计划单号,同合同号有多次冲减的情况,将前面的设置未无效
  290. /// </summary>
  291. /// <param name="balancesubject"></param>
  292. /// <param name="buyercode"></param>
  293. /// <param name="secondlevelact"></param>
  294. /// <param name="pactno"></param>
  295. /// <param name="askplan_id"></param>
  296. /// <param name="transaction"></param>
  297. public void UpdateDlivMoneyToUnValid(string balancesubject, string buyercode, string secondlevelact, string pactno, string askplan_id, out string errMsg)
  298. {
  299. errMsg = "";
  300. string sqlstr = string.Format(SQL_STR_UPDATEDLIVTOUNVALID, balancesubject, buyercode, secondlevelact, pactno, askplan_id, FundVariable.FundConstVariable._transTypePactDeliver);
  301. base.ExecuteNoReaderForSaleFund(sqlstr, out errMsg);
  302. }
  303. public void UpdateDlivMoneyToUnValid(string balancesubject, string buyercode, string secondlevelact, string pactno, string askplan_id, DbHelp.DbTransaction transaction)
  304. {
  305. string sqlstr = string.Format(SQL_STR_UPDATEDLIVTOUNVALID, balancesubject, buyercode, secondlevelact, pactno, askplan_id,FundVariable.FundConstVariable._transTypePactDeliver);
  306. base.ExecuteNoReaderForSaleFund(sqlstr, transaction);
  307. }
  308. /// <summary>
  309. /// 将装车数据设置未无效
  310. /// </summary>
  311. /// <param name="balancesubject"></param>
  312. /// <param name="buyercode"></param>
  313. /// <param name="secondlevelact"></param>
  314. /// <param name="pactno"></param>
  315. /// <param name="askplan_id"></param>
  316. /// <param name="errMsg"></param>
  317. public void UpdateLoadMoneyToUnValid(string balancesubject, string buyercode, string secondlevelact, string pactno, string askplan_id, out string errMsg)
  318. {
  319. errMsg = "";
  320. string sqlstr = string.Format(SQL_STR_UPDATEDLIVTOUNVALID, balancesubject, buyercode, secondlevelact, pactno, askplan_id, FundVariable.FundConstVariable._transTypePactLoad);
  321. base.ExecuteNoReaderForSaleFund(sqlstr, out errMsg);
  322. }
  323. public void UpdateLoadMoneyToUnValid(string balancesubject, string buyercode, string secondlevelact, string pactno, string askplan_id, DbHelp.DbTransaction transaction)
  324. {
  325. string sqlstr = string.Format(SQL_STR_UPDATEDLIVTOUNVALID, balancesubject, buyercode, secondlevelact, pactno, askplan_id, FundVariable.FundConstVariable._transTypePactLoad);
  326. base.ExecuteNoReaderForSaleFund(sqlstr, transaction);
  327. }
  328. /// <summary>
  329. /// 将结算的车的数据设置为无效
  330. /// </summary>
  331. /// <param name="balancesubject"></param>
  332. /// <param name="buyercode"></param>
  333. /// <param name="secondlevelact"></param>
  334. /// <param name="pactno"></param>
  335. /// <param name="askplan_id"></param>
  336. /// <param name="errMsg"></param>
  337. public void UpdateInvoiceMoneyToUnValid(string balancesubject, string buyercode, string secondlevelact, string pactno, string askplan_id, out string errMsg)
  338. {
  339. errMsg = "";
  340. string sqlstr = string.Format(SQL_STR_UPDATEDLIVTOUNVALID, balancesubject, buyercode, secondlevelact, pactno, askplan_id, FundVariable.FundConstVariable._transTypePactInvoice);
  341. base.ExecuteNoReaderForSaleFund(sqlstr, out errMsg);
  342. }
  343. public void UpdateInvoiceMoneyToUnValid(string balancesubject, string buyercode, string secondlevelact, string pactno, string askplan_id, DbHelp.DbTransaction transaction)
  344. {
  345. string sqlstr = string.Format(SQL_STR_UPDATEDLIVTOUNVALID, balancesubject, buyercode, secondlevelact, pactno, askplan_id, FundVariable.FundConstVariable._transTypePactInvoice);
  346. base.ExecuteNoReaderForSaleFund(sqlstr, transaction);
  347. }
  348. /// <summary>
  349. /// 对下车无效的记录,只保留最近的一个
  350. /// </summary>
  351. /// <param name="balancesubject"></param>
  352. /// <param name="buyercode"></param>
  353. /// <param name="askplan_id"></param>
  354. /// <param name="errMsg"></param>
  355. public void DeleteUnValidDelivAskPlanId(string balancesubject, string buyercode, string askplan_id, out string errMsg)
  356. {
  357. errMsg = "";
  358. string lastUPdateTime = GetMaxUpdateTimeByAksplanIdAndTransType(balancesubject, buyercode, askplan_id, FundVariable.FundConstVariable._transTypePactDeliver);
  359. if (lastUPdateTime.Length == 0)
  360. return;
  361. string sqlStr = GetDeleteUnvalidAskplanIdSql(balancesubject, buyercode, askplan_id, FundVariable.FundConstVariable._transTypePactDeliver, lastUPdateTime);
  362. base.ExecuteNoReaderForSaleFund(sqlStr);
  363. }
  364. /// <summary>
  365. /// 对装车无效的记录,只保留最近的一个
  366. /// </summary>
  367. /// <param name="balancesubject"></param>
  368. /// <param name="buyercode"></param>
  369. /// <param name="askplan_id"></param>
  370. /// <param name="errMsg"></param>
  371. public void DeleteUnValidLoadAskPlanId(string balancesubject, string buyercode, string askplan_id, out string errMsg)
  372. {
  373. errMsg = "";
  374. string lastUPdateTime = GetMaxUpdateTimeByAksplanIdAndTransType(balancesubject, buyercode, askplan_id, FundVariable.FundConstVariable._transTypePactLoad);
  375. if (lastUPdateTime.Length == 0)
  376. return;
  377. string sqlStr = GetDeleteUnvalidAskplanIdSql(balancesubject, buyercode, askplan_id, FundVariable.FundConstVariable._transTypePactLoad, lastUPdateTime);
  378. base.ExecuteNoReaderForSaleFund(sqlStr);
  379. }
  380. /// <summary>
  381. /// 对结算无效的记录,只保留最近的一个
  382. /// </summary>
  383. /// <param name="balancesubject"></param>
  384. /// <param name="buyercode"></param>
  385. /// <param name="askplan_id"></param>
  386. /// <param name="errMsg"></param>
  387. public void DeleteUnValidInvoinceAskPlanId(string balancesubject, string buyercode, string askplan_id, out string errMsg)
  388. {
  389. errMsg = "";
  390. string lastUPdateTime = GetMaxUpdateTimeByAksplanIdAndTransType(balancesubject, buyercode, askplan_id, FundVariable.FundConstVariable._transTypePactInvoice);
  391. if (lastUPdateTime.Length == 0)
  392. return;
  393. string sqlStr = GetDeleteUnvalidAskplanIdSql(balancesubject, buyercode, askplan_id, FundVariable.FundConstVariable._transTypePactInvoice, lastUPdateTime);
  394. base.ExecuteNoReaderForSaleFund(sqlStr);
  395. }
  396. private string GetDeleteUnvalidAskplanIdSql(string balancesubject, string buyercode, string askplan_id, string transType,string lastUPdatetime)
  397. {
  398. string sqlStr = @" delete from sel_fund_pact_fundusedetail a
  399. where balancesubject = '{0}' and buyercode = '{1}' and askplan_id = '{2}'
  400. and trans_type = '{3}' and ismoneyvalid = '1' and updatetime <> '{4}' ";
  401. return string.Format(sqlStr,balancesubject,buyercode,askplan_id,transType,lastUPdatetime);
  402. }
  403. public string GetMaxUpdateTimeByAksplanIdAndTransType(string balancesubject, string buyercode, string askplan_id,string transType)
  404. {
  405. string sqlStr = @" select max(updatetime) updatetime from sel_fund_pact_fundusedetail a
  406. where balancesubject = '{0}' and buyercode = '{1}' and askplan_id = '{2}'
  407. and trans_type = '{3}' ";
  408. DataSet ds = base.ExecuteReaderForSaleFund(string.Format(sqlStr,balancesubject,buyercode,askplan_id,transType));
  409. try
  410. {
  411. return ds.Tables[0].Rows[0][0].ToString();
  412. }
  413. catch
  414. {
  415. return "";
  416. }
  417. }
  418. }
  419. }