PushRecordDAL.cs 44 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866
  1. using Common.Model;
  2. using Common.Wechat;
  3. using CoreEntity.BAL;
  4. using CoreEntity.Entity;
  5. using PublicLibrary.Common;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Data;
  9. using System.Data.SqlClient;
  10. using System.Text;
  11. using ZcPeng.PublicLibrary;
  12. using ZcPeng.weixin.PublicAccount;
  13. namespace CoreEntity.DAL
  14. {
  15. public class PushRecordDAL
  16. {
  17. public const string orgid = "O24LK4F259B";
  18. public static IList<PushStorLimit> GetPushLimit(string filterstr = "") {
  19. #region 获取推送时间
  20. DataTable dt = new DataTable();
  21. string result;
  22. string connectstr = "Data Source =192.168.50.30; Initial Catalog = LJHYBZK; Persist Security Info = True; User ID = sa; Password = xq!@#2014;Pooling=true;MAX Pool Size=512;Min Pool Size=50;Connection Lifetime=30";
  23. List<SqlParameter> parameters1 = new List<SqlParameter>();
  24. bool success = DataAccess.GetValues(connectstr,
  25. "select * from " + Config.TablePrefix + "PushStorLimit where 1=1 " +
  26. filterstr, ref dt, parameters1.ToArray(), out result);
  27. // 把DataTable转换为IList<UserInfo>
  28. IList<PushStorLimit> psls = new List<PushStorLimit>();
  29. if (dt!=null && dt.Rows.Count > 0)
  30. {
  31. // 把DataTable转换为IList<UserInfo>
  32. psls = ModelConvertHelper<PushStorLimit>.ConvertToModel(dt);
  33. }
  34. return psls;
  35. #endregion
  36. }
  37. public static Dictionary<string,Object> AddPushRecord(
  38. string PushCode,
  39. Int32 PushAccountId,
  40. string ContactId,
  41. string Remark
  42. , string ConfirmPerson
  43. , string SaleManId)
  44. {
  45. Dictionary<string, Object> resultdic = new Dictionary<string, Object>(6);
  46. #region 添加推送记录
  47. string commandTextRecord = "INSERT INTO " + Config.TablePrefix
  48. + "PushRecord (" +
  49. "PushCode," +
  50. "Id," +
  51. "PushTime," +
  52. "PushAccountId," +
  53. "ContactId," +
  54. "PushFeedBackTime,IsComplete,CompleteTime,HasOrder,OrderTime," +
  55. "ConfirmPuchaseTime,ConfirmPuchaser,ConfirmOrderTime,ConfirmOrderPerson,IsCancel,CancelTime,Remark,CreationPerson" +
  56. ",SaleManId)"
  57. + " VALUES (" +
  58. "@PushCode," +
  59. "@Id," +
  60. "@PushTime," +
  61. "@PushAccountId," +
  62. "@ContactId," +
  63. "@PushFeedBackTime,@IsComplete,@CompleteTime,@HasOrder,@OrderTime," +
  64. "@ConfirmPuchaseTime,@ConfirmPuchaser,@ConfirmOrderTime,@ConfirmOrderPerson,@IsCancel,@CancelTime,@Remark,@CreationPerson" +
  65. ",@SaleManId)";
  66. string resultRecord;
  67. //准备参数
  68. Guid PushRecordId = Guid.NewGuid();
  69. List<List<Object>> parametersRecord = new List<List<Object>>();
  70. parametersRecord.Add(new List<Object>(2) { "PushCode", PushCode });
  71. parametersRecord.Add(new List<Object>(2) { "Id", PushRecordId });
  72. parametersRecord.Add(new List<Object>(2) { "PushTime", DateTime.Now });
  73. parametersRecord.Add(new List<Object>(2) { "PushAccountId", PushAccountId });
  74. parametersRecord.Add(new List<Object>(2) { "ContactId", ContactId });
  75. parametersRecord.Add(new List<Object>(2) { "PushFeedBackTime", null });
  76. parametersRecord.Add(new List<Object>(2) { "IsComplete", (Int32)0 });
  77. parametersRecord.Add(new List<Object>(2) { "CompleteTime", null });
  78. parametersRecord.Add(new List<Object>(2) { "HasOrder", 0 });
  79. parametersRecord.Add(new List<Object>(2) { "OrderTime", null });
  80. parametersRecord.Add(new List<Object>(2) { "ConfirmPuchaseTime", null });
  81. parametersRecord.Add(new List<Object>(2) { "ConfirmPuchaser", null });
  82. parametersRecord.Add(new List<Object>(2) { "ConfirmOrderTime", null });
  83. parametersRecord.Add(new List<Object>(2) { "ConfirmOrderPerson", null });
  84. parametersRecord.Add(new List<Object>(2) { "IsCancel", 0 });
  85. parametersRecord.Add(new List<Object>(2) { "CancelTime", null });
  86. parametersRecord.Add(new List<Object>(2) { "Remark", Remark });
  87. //parametersRecord.Add(new List<Object>() { "EntId", EntId });
  88. parametersRecord.Add(new List<Object>(2) { "CreationPerson", ConfirmPerson });
  89. parametersRecord.Add(new List<Object>(2) { "SaleManId", SaleManId });
  90. List<SqlParameter> parametersRecord1 = DataAccess.ToParameters(parametersRecord);
  91. int successRecord = DataAccess.ExecuteCommand(commandTextRecord, parametersRecord1, out resultRecord);
  92. resultdic.Add("successRecord", successRecord);
  93. resultdic.Add("resultRecord", resultRecord);
  94. resultdic.Add("PushRecordId", PushRecordId);
  95. #endregion
  96. return resultdic;
  97. }
  98. public static IDictionary<string, Object> AddOrUpdatePushFeedBack(
  99. string PushCode
  100. ,
  101. string PushRecordId
  102. , string FeedbackId,
  103. Int32 PushAccountId,
  104. string ContactId,
  105. string GoodsId, string GoodsCode
  106. , string GoodsName, decimal StoreGapNum
  107. , string GoodsSpec, string Manufacturer
  108. , string BusinessId, string BusinessCode, string BusinessName
  109. , string SuppliersId, string BrandName, string BrandId
  110. , string EntId, string Remark, string ConfirmPerson,
  111. Decimal PurPrice,
  112. Decimal ActPrice,
  113. Decimal PurchaseTotalNum
  114. ,string SaleManId)
  115. {
  116. IDictionary<string, Object> resultdic = new Dictionary<string, Object>(4);
  117. Guid PushFeedbackId = Guid.NewGuid();
  118. int Status = 0;
  119. if ((PushRecordId != null && PushRecordId != "")) {
  120. bool needinsert = false;
  121. if ((FeedbackId != null && FeedbackId != ""))
  122. {
  123. List<PushFeedbackExt> pls = PushFeedBackDAL.GetFeedbacks(PushRecordId, " and Id='" + FeedbackId + "'");
  124. PushFeedback pfb = pls.ToArray()[0];
  125. int newPushAccountId = PushAccountId;
  126. if (pfb.PushAccountId != Convert.ToInt32(newPushAccountId)
  127. || pfb.SuppliersId != SuppliersId)
  128. {
  129. if (pfb.State == 0|| pfb.State == 6 || pfb.State == 5)//初始化供应商信息
  130. { //添加新明细
  131. Status = 6;
  132. //不需要删除旧的 打开仍然可以填写 IsCancel标记为1
  133. //PushFeedBackDAL.DeleteFeedback(FeedbackId);
  134. PushFeedBackDAL.MarkCancelFeedback(FeedbackId);
  135. //获取推送上下限
  136. IList<PushStorLimit> pushLimits = PushRecordDAL.GetPushLimit(" and goodsId='" + GoodsId + "'");
  137. // 获取待推联系人 绑定账户 不需要绑定微信公众号 不绑定微信公众号不能推送信息
  138. string filterstr =
  139. //" and UserId IS NOT NULL and UserId !=''" +
  140. //" and FocusMicNo IS NOT NULL and FocusMicNo !='' " +
  141. " and UserId = '" + PushAccountId + "'"+
  142. " and ContactId = '" + ContactId + "'" +
  143. " and SuppliersId = '" + SuppliersId + "'";
  144. Dictionary<string, PushStorLimit> gapnum;
  145. List<PushContactWithGoods> GetPushContacts = ContactBAL.GetPushContactWithGoods(filterstr, ",t1.ContactId,t1.SuppliersId", pushLimits, out gapnum, out _);
  146. PushContactWithGoods GetPushContact = GetPushContacts.ToArray()[0];
  147. BusinessId = GetPushContact.BusinessId;
  148. BusinessCode = GetPushContact.BusinessCode;
  149. BusinessName = GetPushContact.BusinessName;
  150. SuppliersId = GetPushContact.SuppliersId;
  151. //如果同一批次已经有这个联系人的推送记录 则加入到对方的记录 否则:
  152. //新建新的推送记录-pushrecord
  153. PushRecord prec= GetRecordByPushCode(PushCode, PushAccountId);
  154. if (prec != null)
  155. PushRecordId = prec.Id.ToString();
  156. else
  157. {
  158. Dictionary<string, Object> pdic = AddPushRecord(PushCode, PushAccountId, ContactId, "", ConfirmPerson,SaleManId);
  159. Object recordId;
  160. pdic.TryGetValue("PushRecordId", out recordId);
  161. PushRecordId = ((Guid)recordId).ToString();
  162. }
  163. }
  164. else if (pfb.State == 2)
  165. {
  166. Status = 5;
  167. //获取推送上下限
  168. IList<PushStorLimit> pushLimits = PushRecordDAL.GetPushLimit(" and goodsId='" + GoodsId + "'");
  169. // 获取待推联系人 绑定账户 和微信
  170. string filterstr =
  171. //" and UserId IS NOT NULL and UserId !=''" +
  172. //" and FocusMicNo IS NOT NULL and FocusMicNo !='' " +
  173. " and UserId = '" + PushAccountId + "'" +
  174. " and ContactId = '" + ContactId + "'" +
  175. " and SuppliersId = '" + SuppliersId + "'";
  176. Dictionary<string, PushStorLimit> gapnum;
  177. List<PushContactWithGoods> GetPushContacts = ContactBAL.GetPushContactWithGoods(filterstr, ",t1.ContactId,t1.SuppliersId", pushLimits, out gapnum, out _);
  178. PushContactWithGoods GetPushContact = GetPushContacts.ToArray()[0];
  179. BusinessId = GetPushContact.BusinessId;
  180. BusinessCode = GetPushContact.BusinessCode;
  181. BusinessName = GetPushContact.BusinessName;
  182. SuppliersId = GetPushContact.SuppliersId;
  183. //如果统一批次已经有这个联系人的推送记录 则加入到对方的记录 否则:
  184. //新建新的推送记录-pushrecord
  185. PushRecord prec = GetRecordByPushCode(PushCode, PushAccountId);
  186. if (prec != null)
  187. PushRecordId = prec.Id.ToString();
  188. else
  189. {
  190. Dictionary<string, Object> pdic = AddPushRecord(PushCode, PushAccountId, ContactId, "", ConfirmPerson, SaleManId);
  191. Object recordId;
  192. pdic.TryGetValue("PushRecordId", out recordId);
  193. PushRecordId = ((Guid)recordId).ToString();
  194. }
  195. }
  196. needinsert = true;
  197. }
  198. }
  199. if ((FeedbackId == null || FeedbackId == "")||needinsert)
  200. {
  201. //添加推送明细
  202. #region 添加推送明细
  203. string commandText = "INSERT INTO " + Config.TablePrefix
  204. + "PushFeedback (Id,PushRecordId," +
  205. "PushAccountId," +
  206. "ContactId," +
  207. "GoodsId,GoodsCode,GoodsName,StoreGapNum," +
  208. "GoodsSpec,Manufacturer," +
  209. "BusinessId,BusinessCode,BusinessName" +
  210. ",SuppliersId" +
  211. ",BrandName,BrandId" +
  212. ",EntId,Remark" +
  213. ",CertiNo," +
  214. "PurPrice," +
  215. "ActPrice," +
  216. "PurchaseTotalNum" +
  217. ",State" +
  218. ",PushCode"+
  219. ",CreationPerson" +
  220. ",SaleManId)"
  221. + " VALUES (@Id,@PushRecordId," +
  222. "@PushAccountId," +
  223. "@ContactId," +
  224. "@GoodsId,@GoodsCode,@GoodsName,@StoreGapNum," +
  225. "@GoodsSpec,@Manufacturer," +
  226. "@BusinessId,@BusinessCode,@BusinessName" +
  227. ",@SuppliersId" +
  228. ",@BrandName,@BrandId" +
  229. ",@EntId,@Remark" +
  230. ",@CertiNo" +
  231. ",@PurPrice" +
  232. ",@ActPrice" +
  233. ",@PurchaseTotalNum" +
  234. ",@State" +
  235. ",@PushCode" +
  236. ",@CreationPerson" +
  237. ",@SaleManId)";
  238. string result;
  239. //准备参数
  240. List<List<Object>> parameters = new List<List<Object>>();
  241. parameters.Add(new List<Object>() { "Id", PushFeedbackId });
  242. parameters.Add(new List<Object>() { "PushRecordId", PushRecordId });
  243. parameters.Add(new List<Object>() { "PushAccountId", PushAccountId });
  244. parameters.Add(new List<Object>() { "ContactId", ContactId });
  245. parameters.Add(new List<Object>() { "GoodsId", GoodsId });
  246. parameters.Add(new List<Object>() { "GoodsCode", GoodsCode });
  247. parameters.Add(new List<Object>() { "GoodsName", GoodsName });
  248. parameters.Add(new List<Object>() { "StoreGapNum", 0 });
  249. parameters.Add(new List<Object>() { "GoodsSpec", GoodsSpec });
  250. parameters.Add(new List<Object>() { "Manufacturer", Manufacturer });
  251. parameters.Add(new List<Object>() { "BusinessId", BusinessId });
  252. parameters.Add(new List<Object>() { "BusinessCode", BusinessCode });
  253. parameters.Add(new List<Object>() { "BusinessName", BusinessName });
  254. parameters.Add(new List<Object>() { "SuppliersId", SuppliersId });
  255. parameters.Add(new List<Object>() { "BrandName", BrandName });
  256. parameters.Add(new List<Object>() { "BrandId", BrandId });
  257. parameters.Add(new List<Object>() { "EntId", EntId });
  258. parameters.Add(new List<Object>() { "Remark", Remark });
  259. parameters.Add(new List<Object>() { "CertiNo", "" });
  260. parameters.Add(new List<Object>() { "PurPrice", PurPrice });
  261. parameters.Add(new List<Object>() { "ActPrice", ActPrice });
  262. parameters.Add(new List<Object>() { "PurchaseTotalNum", PurchaseTotalNum });
  263. parameters.Add(new List<Object>() { "State", Status });
  264. parameters.Add(new List<Object>() { "PushCode", PushCode });
  265. parameters.Add(new List<Object>() { "CreationPerson", ConfirmPerson });
  266. parameters.Add(new List<Object>() { "SaleManId", SaleManId });
  267. List<SqlParameter> parameters1 = DataAccess.ToParameters(parameters);
  268. int success = DataAccess.ExecuteCommand(commandText, parameters1, out result);
  269. resultdic.Add("successRecord", success);
  270. resultdic.Add("resultRecord", result);
  271. #endregion
  272. }
  273. //else//重新推送 修改
  274. //{
  275. // //--确认订单:采购员已确认 0 刚生成推送记录 1 业务员确认(数量提交确认) 2 供应商业务员取消
  276. // //3 采购员确认(生成计划)
  277. // //--4 供应商业务员确认(二次确认 开票 生成采购订单) 5 重新推送
  278. // #region 更新明细 5 量不足重选推送
  279. // string commandTextFeed = "UPDATE " + Config.TablePrefix + "PushFeedback " +
  280. // " SET " +
  281. // "PushRecordId = PushRecordId1, " +
  282. // " State = 5 " +
  283. // " FROM (SELECT " +
  284. // "@PushRecordId as PushRecordId1" +
  285. // " ) A" +
  286. // " WHERE Id= @FeedbackId " +
  287. // "AND (State in(2,6)) ";
  288. // string resultState;
  289. // //准备参数
  290. // List<List<Object>> parametersFeed = new List<List<Object>>();
  291. // parametersFeed.Add(new List<Object>() { "PushRecordId", PushRecordId });
  292. // parametersFeed.Add(new List<Object>() { "FeedbackId", FeedbackId });
  293. // List<SqlParameter> parametersFeed1 = DataAccess.ToParameters(parametersFeed);
  294. // int successState = DataAccess.ExecuteCommand(commandTextFeed, parametersFeed1, out resultState);
  295. // #endregion
  296. // resultdic.Add("successRecord", successState);
  297. // resultdic.Add("resultRecord", resultState);
  298. // //old PushFeedbackId
  299. // PushFeedbackId = Guid.Parse(FeedbackId);
  300. // Status = 5;
  301. //}
  302. #region 添加推送确认记录
  303. string commandTextRecordRelate = "INSERT INTO " + Config.TablePrefix
  304. + "PushConfirmRecord (Id,PushRecordId,PushFeedbackId,ConfirmTime,ConfirmPerson,Status)"
  305. + " VALUES (@Id,@PushRecordId,@PushFeedbackId,@ConfirmTime,@ConfirmPerson,@Status)";
  306. string resultRecordRelate;
  307. //准备参数
  308. List<List<Object>> parametersRecordRelate = new List<List<Object>>();
  309. parametersRecordRelate.Add(new List<Object>() { "Id", Guid.NewGuid() });
  310. parametersRecordRelate.Add(new List<Object>() { "PushRecordId", PushRecordId });
  311. parametersRecordRelate.Add(new List<Object>() { "PushFeedbackId", PushFeedbackId });
  312. parametersRecordRelate.Add(new List<Object>() { "ConfirmTime", DateTime.Now });
  313. parametersRecordRelate.Add(new List<Object>() { "ConfirmPerson", ConfirmPerson });
  314. parametersRecordRelate.Add(new List<Object>() { "Status", Status });
  315. List<SqlParameter> parametersRecordRelate1 = DataAccess.ToParameters(parametersRecordRelate);
  316. int successRecordRelate = DataAccess.ExecuteCommand(commandTextRecordRelate, parametersRecordRelate1, out resultRecordRelate);
  317. resultdic.Add("successRecordRelate", successRecordRelate);
  318. resultdic.Add("resultRecordRelate", resultRecordRelate);
  319. #endregion
  320. }
  321. return resultdic;
  322. }
  323. /// <summary>
  324. /// 根据上下限 查询待推送联系人
  325. /// </summary>
  326. /// <param name="notexist">是否是低于下限的产品的联系人</param>
  327. /// <returns></returns>
  328. public static IList<PushContact> GetPushContact(IList<PushStorLimit> storLimits, bool notexist = true)
  329. {
  330. string not = "";
  331. if (notexist)
  332. {
  333. not = "not";
  334. }
  335. List<string> superior_list = new List<string>(0);
  336. foreach (PushStorLimit limit in storLimits)
  337. {
  338. //Role role;
  339. //if (roleMap.TryGetValue(permsr.RoleId, out role))
  340. //{
  341. // listRoles.Add(role);
  342. //}
  343. superior_list.Add(limit.GoodsId);
  344. }
  345. //perms.RoleList = listRoles;
  346. string limitss = string.Join(",", superior_list.ToArray());
  347. #region 获取推送时间
  348. DataTable dt = new DataTable();
  349. string result;
  350. List<SqlParameter> parameters1 = new List<SqlParameter>();
  351. string command = "SELECT * " +
  352. "FROM(SELECT ROW_NUMBER() OVER(PARTITION BY t1.GoodsId ORDER BY t1.LastPrice ASC) AS RNUM," +
  353. " *" +
  354. " FROM " + Config.TablePrefix + "PushContact t1 " +
  355. " WHERE " + not + "exists (" +
  356. //" select 1 from " + Config.TablePrefix + "PushStorLimit A " +
  357. //" where A.GoodsId = t1.GoodsId)" +
  358. " WHERE t1.GoodsId IN ('" +
  359. limitss +
  360. " ')" +
  361. ") AS T " +
  362. " WHERE T.RNUM = 1 " +
  363. " ";
  364. bool success = DataAccess.GetValues(command, ref dt, parameters1.ToArray(), out result);
  365. // 把DataTable转换为IList<UserInfo>
  366. IList<PushContact> psls = new List<PushContact>();
  367. if (dt!=null && dt.Rows.Count > 0)
  368. {
  369. // 把DataTable转换为IList<UserInfo>
  370. psls = ModelConvertHelper<PushContact>.ConvertToModel(dt);
  371. }
  372. return psls;
  373. #endregion
  374. }
  375. private static List<Option> _optionReceipt;
  376. private static List<Option> _optionCentPay;
  377. public static List<Option> getOptionReceipt()
  378. {
  379. return _optionReceipt;
  380. }
  381. public static List<Option> getOptionCentPay (){
  382. return _optionCentPay;
  383. }
  384. public static Dictionary<Int32, Option> OptionCentPayMap;
  385. public static List<Option> OptionReceipt { get => _optionReceipt; set => _optionReceipt = value; }
  386. public static List<Option> OptionCentPay { get => _optionCentPay; set => _optionCentPay = value; }
  387. static PushRecordDAL()
  388. {
  389. OptionReceipt = new List<Option>();
  390. Option option = new Option();
  391. option.label = "自提";
  392. option.value = "1";
  393. Option option1 = new Option();
  394. option1.label = "配送";
  395. option1.value = "2";
  396. Option option2 = new Option();
  397. option2.label = "托运";
  398. option2.value = "3";
  399. OptionReceipt.Add(option);
  400. OptionReceipt.Add(option1);
  401. OptionReceipt.Add(option2);
  402. OptionCentPay = new List<Option>();
  403. OptionCentPayMap = new Dictionary<Int32, Option>();
  404. Option option0 = new Option();
  405. option0.label = "月结公账";
  406. option0.value = "1";
  407. OptionCentPayMap.Add(1,option0);
  408. Option option01 = new Option();
  409. option01.label = "代销公账";
  410. option01.value = "2";
  411. OptionCentPayMap.Add(2, option01);
  412. Option option02 = new Option();
  413. option02.label = "货到公账";
  414. option02.value = "3";
  415. OptionCentPayMap.Add(3, option02);
  416. Option option03 = new Option();
  417. option03.label = "银行承兑";
  418. option03.value = "4";
  419. OptionCentPayMap.Add(4, option03);
  420. Option option04 = new Option();
  421. option04.label = "预付公账";
  422. option04.value = "5";
  423. OptionCentPayMap.Add(5, option04);
  424. Option option05 = new Option();
  425. option05.label = "其他";
  426. option05.value = "6";
  427. OptionCentPayMap.Add(6, option05);
  428. OptionCentPay.Add(option0);
  429. OptionCentPay.Add(option01);
  430. OptionCentPay.Add(option02);
  431. OptionCentPay.Add(option03);
  432. OptionCentPay.Add(option04);
  433. OptionCentPay.Add(option05);
  434. }
  435. /// 添加采购计划记录到erp
  436. /// SuppliersId 是根据来往单位(BusinnesDoc)是否供货生成的供应商表(SupplierDoc)记录的id
  437. /// 如果传入BusinnesId BusinessCode:
  438. /// 查询 SuppliersId 来往单位(BusinnesDoc)Is_Supp 设置Y
  439. /// 如果传入SuppliersId:不需要 BusinessId BusinessCode
  440. public static IDictionary<string, Object> AddPlan(
  441. string RecordId,
  442. string FeedbackId
  443. , Int32 PushAccountId
  444. , string EntId, int ReceiptMd, int CentPayMd
  445. , string OrgId, string DeptId
  446. , string Summaries, string Remark
  447. , string GoodsId, string SuppliersId
  448. , string BusinessId, string BusinessCode
  449. , string LoginStaffDocId
  450. , DateTime RequestDate
  451. , decimal PrepayAmt
  452. , string IsPrepay
  453. , string OppContId
  454. , string K_ContactId)
  455. {
  456. IDictionary<string, Object> resultdic = new Dictionary<string, Object>(6);
  457. //查询或生成 SuppliersId
  458. #region SuppliersId
  459. if (BusinessCode != null && BusinessCode != ""
  460. && BusinessId != null && BusinessId != "")
  461. {
  462. if (SuppliersId == null) {
  463. //SupplyDoc sups = SupplyDAL.getSupply(BusinessCode);
  464. //SuppliersId = sups.SuppliersId;
  465. SuppliersId = BusinessId;
  466. }
  467. //if (SuppliersId == null)
  468. //{
  469. //#region 添加推送确认记录
  470. //string commandTextRecordRelate = "INSERT INTO "
  471. //+ "SUPPLYDOC (SuppliersId,EntId,gysbh,CreaterId,CreaterTime)"
  472. //+ " VALUES (@Id,@PushRecordId,@PushFeedbackId,@ConfirmTime,@ConfirmPerson)";
  473. //string resultRecordRelate;
  474. ////准备参数
  475. //List<List<Object>> parametersRecordRelate = new List<List<Object>>();
  476. //parametersRecordRelate.Add(new List<Object>() { "Id", Guid.NewGuid() });
  477. //parametersRecordRelate.Add(new List<Object>() { "PushRecordId", PushRecordId });
  478. //parametersRecordRelate.Add(new List<Object>() { "PushFeedbackId", PushFeedbackId });
  479. //parametersRecordRelate.Add(new List<Object>() { "Status", Status });
  480. //parametersRecordRelate.Add(new List<Object>() { "ConfirmTime", DateTime.Now });
  481. //parametersRecordRelate.Add(new List<Object>() { "ConfirmPerson", ConfirmPerson });
  482. //List<SqlParameter> parametersRecordRelate1 = DataAccess.ToParameters(parametersRecordRelate);
  483. //int successRecordRelate = DataAccess.ExecuteCommand(commandTextRecordRelate, parametersRecordRelate1, out resultRecordRelate);
  484. //resultdic.Add("successRecordRelate", successRecordRelate);
  485. //resultdic.Add("resultRecordRelate", resultRecordRelate);
  486. //#endregion
  487. //}
  488. }
  489. #endregion
  490. //新建采购计划
  491. #region 添加推送记录
  492. string commandTextRecord = "INSERT INTO "
  493. + "PurPlanMt (" +
  494. //"BillNo," +
  495. "EntId,BillCode,RuleId,Dates,"
  496. + "OnTime,SysDates,PurOrgId,ReceiptMd,CentPayMd,"
  497. + "PayOrgId,SaleManId,caozy,OrgId,DeptId,"
  498. + "IsEnd,PurPlanType,PurObj,StartDate,EndDate,"
  499. + "IsDone,BillState,Summaries,Remark,SuppliersId,"
  500. + "GoodsId,PushFeedbackId,PushRecordId,"
  501. + "PrepayAmt,IsPrepay,OppContId,K_ContactId"
  502. + ")"
  503. + " VALUES (" +
  504. //"@BillNo," +
  505. "@EntId,@BillCode,@RuleId,@Dates,"
  506. + "@OnTime,@SysDates,@PurOrgId,@ReceiptMd,@CentPayMd,"
  507. + "@PayOrgId,@SaleManId,@caozy,@OrgId,@DeptId,"
  508. + "@IsEnd,@PurPlanType,@PurObj,@StartDate,@EndDate,"
  509. + "@IsDone,@BillState,@Summaries,@Remark,@SuppliersId,"
  510. + "@GoodsId,@PushFeedbackId,@PushRecordId,"
  511. + "@PrepayAmt,@IsPrepay,@OppContId,@K_ContactId" +
  512. ")";
  513. string resultRecord;
  514. //准备参数
  515. //Guid PushRecordId = Guid.NewGuid();
  516. List<List<Object>> parametersRecord = new List<List<Object>>();
  517. //long PlanBillNo = RandHelper.GetTimeRandId();
  518. //parametersRecord.Add(new List<Object>() { "BillNo", PlanBillNo });
  519. parametersRecord.Add(new List<Object>() { "EntId", EntId });
  520. parametersRecord.Add(new List<Object>() { "BillCode", RandHelper.GenerateRandomCode(20) });
  521. parametersRecord.Add(new List<Object>() { "RuleId", "" });
  522. parametersRecord.Add(new List<Object>() { "Dates", DateTime.Now.ToString("yyyy-MM-dd") });
  523. parametersRecord.Add(new List<Object>() { "OnTime", DateTime.Now.ToString("T") });
  524. parametersRecord.Add(new List<Object>() { "SysDates", DateTime.Now.ToString("yyyy-MM-dd") });
  525. parametersRecord.Add(new List<Object>() { "PurOrgId", OrgId });
  526. parametersRecord.Add(new List<Object>() { "ReceiptMd", ReceiptMd });
  527. parametersRecord.Add(new List<Object>() { "CentPayMd", CentPayMd });
  528. parametersRecord.Add(new List<Object>() { "PayOrgId", "O2IR7T92J72" });//财务部
  529. parametersRecord.Add(new List<Object>() { "SaleManId", LoginStaffDocId });
  530. parametersRecord.Add(new List<Object>() { "caozy", LoginStaffDocId });
  531. parametersRecord.Add(new List<Object>() { "OrgId", OrgId });
  532. parametersRecord.Add(new List<Object>() { "DeptId", DeptId });
  533. parametersRecord.Add(new List<Object>() { "IsEnd", 'N' });//默认N
  534. parametersRecord.Add(new List<Object>() { "PurPlanType", 0 });
  535. parametersRecord.Add(new List<Object>() { "PurObj", PushAccountId });//对方业务员
  536. parametersRecord.Add(new List<Object>() { "StartDate", DateTime.Now.ToString("yyyy-MM-dd") });
  537. parametersRecord.Add(new List<Object>() { "EndDate", RequestDate.ToString("yyyy-MM-dd") });
  538. parametersRecord.Add(new List<Object>() { "IsDone", 'N' });
  539. parametersRecord.Add(new List<Object>() { "BillState", 0 });
  540. parametersRecord.Add(new List<Object>() { "Summaries", Summaries });
  541. parametersRecord.Add(new List<Object>() { "Remark", Remark });
  542. parametersRecord.Add(new List<Object>() { "SuppliersId", SuppliersId });
  543. parametersRecord.Add(new List<Object>() { "GoodsId", GoodsId });
  544. parametersRecord.Add(new List<Object>() { "PushFeedbackId", FeedbackId });//
  545. parametersRecord.Add(new List<Object>() { "PushRecordId", RecordId });//
  546. parametersRecord.Add(new List<Object>() { "PrepayAmt", PrepayAmt });//
  547. parametersRecord.Add(new List<Object>() { "IsPrepay", IsPrepay });//
  548. parametersRecord.Add(new List<Object>() { "OppContId", OppContId });//
  549. parametersRecord.Add(new List<Object>() { "K_ContactId", K_ContactId });//
  550. List<SqlParameter> parametersRecord1 = DataAccess.ToParameters(parametersRecord);
  551. int successRecord = DataAccess.ExecuteCommand(commandTextRecord, parametersRecord1, out resultRecord);
  552. resultdic.Add("successRecord", successRecord);
  553. resultdic.Add("resultRecord", resultRecord);
  554. #endregion
  555. int PlanBillNo = BaseDAL.GetId("PurPlanMT");
  556. resultdic.Add("PlanBillNo", PlanBillNo);
  557. return resultdic;
  558. }
  559. public static IDictionary<string, Object> AddPlanDT(
  560. string PushFeedbackId
  561. ,
  562. int PlanBillNo,Int32 BillSn,
  563. string GoodsId,string GoodsSpec,Int32 GoodsGapNum ,
  564. Decimal LastPrice , string Remark,
  565. string EntId,
  566. string BusinessId, string BusinessCode,
  567. string SuppliersId,
  568. Int32 PurchaseTotalNum, Int32 SafeDays
  569. , string LoginStaffDocId
  570. , DateTime RequestDate)
  571. {
  572. IDictionary<string, Object> resultdic = new Dictionary<string, Object>(6);
  573. //查询或生成 SuppliersId
  574. #region SuppliersId
  575. if (BusinessCode != null && BusinessCode != ""
  576. && BusinessId != null && BusinessId != "")
  577. {
  578. if (SuppliersId == null)
  579. {
  580. //SupplyDoc sups = SupplyDAL.getSupply(BusinessCode);
  581. //SuppliersId = sups.SuppliersId;
  582. SuppliersId = BusinessId;
  583. }
  584. if (SuppliersId == null)
  585. {
  586. //#region 添加推送确认记录
  587. //string commandTextRecordRelate = "INSERT INTO "
  588. //+ "SUPPLYDOC (SuppliersId,EntId,gysbh,CreaterId,CreaterTime)"
  589. //+ " VALUES (@Id,@PushRecordId,@PushFeedbackId,@ConfirmTime,@ConfirmPerson)";
  590. //string resultRecordRelate;
  591. ////准备参数
  592. //List<List<Object>> parametersRecordRelate = new List<List<Object>>();
  593. //parametersRecordRelate.Add(new List<Object>() { "Id", Guid.NewGuid() });
  594. //parametersRecordRelate.Add(new List<Object>() { "PushRecordId", PushRecordId });
  595. //parametersRecordRelate.Add(new List<Object>() { "PushFeedbackId", PushFeedbackId });
  596. //parametersRecordRelate.Add(new List<Object>() { "Status", Status });
  597. //parametersRecordRelate.Add(new List<Object>() { "ConfirmTime", DateTime.Now });
  598. //parametersRecordRelate.Add(new List<Object>() { "ConfirmPerson", ConfirmPerson });
  599. //List<SqlParameter> parametersRecordRelate1 = DataAccess.ToParameters(parametersRecordRelate);
  600. //int successRecordRelate = DataAccess.ExecuteCommand(commandTextRecordRelate, parametersRecordRelate1, out resultRecordRelate);
  601. //resultdic.Add("successRecordRelate", successRecordRelate);
  602. //resultdic.Add("resultRecordRelate", resultRecordRelate);
  603. //#endregion
  604. }
  605. }
  606. #endregion
  607. //新建推送记录
  608. #region 添加推送记录
  609. string commandTextRecord = "INSERT INTO "
  610. + "PurPlanDT (BillNo,BillSn,EntId,BillSort,SuppliersId,"
  611. + "GoodsId,PackId,unit,Meas,BaseNum,"
  612. + "Num,ExecNum,CancelNum,Price,Taxprice,"
  613. + "BasePrice,BaseTaxprice,DedRate,Amount,Rate,"
  614. + "Tax,TaxAmount,RetailP,RetailAmt,IsFree,"
  615. + "IsDone,Remark,DayTTNum,DaySTNum,DayNTNum,"
  616. + "DayHENum,MinTaxPrice,LastTaxPrice,LastSupp,PlaceNum,"
  617. + "PurSuppNum,LackNum,songhts,SafeDays,PONum,PushFeedbackId"
  618. + ")"
  619. + " VALUES (@BillNo,@BillSn,@EntId,@BillSort,@SuppliersId,"
  620. + "@GoodsId,@PackId,@unit,@Meas,@BaseNum,"
  621. + "@Num,@ExecNum,@CancelNum,@Price,@Taxprice,"
  622. + "@BasePrice,@BaseTaxprice,@DedRate,@Amount,@Rate,"
  623. + "@Tax,@TaxAmount,@RetailP,@RetailAmt,@IsFree,"
  624. + "@IsDone,@Remark,@DayTTNum,@DaySTNum,@DayNTNum,"
  625. + "@DayHENum,@MinTaxPrice,@LastTaxPrice,@LastSupp,@PlaceNum,"
  626. + "@PurSuppNum,@LackNum,@songhts,@SafeDays,@PONum,@PushFeedbackId" +
  627. ")";
  628. string resultRecord;
  629. //准备参数
  630. PGPrice pg = IDHelper.GetPackId(GoodsId,EntId);
  631. string GetPackId = "";
  632. if (pg != null)
  633. GetPackId = pg.PackId;
  634. Guid PushRecordId = Guid.NewGuid();
  635. List<List<Object>> parametersRecord = new List<List<Object>>();
  636. parametersRecord.Add(new List<Object>() { "BillNo", PlanBillNo });//关联的采购计划BillNo RandHelper.GenerateRandomCode(20)
  637. parametersRecord.Add(new List<Object>() { "BillSn", BillSn });
  638. parametersRecord.Add(new List<Object>() { "EntId", EntId });
  639. parametersRecord.Add(new List<Object>() { "BillSort", BillSn });
  640. parametersRecord.Add(new List<Object>() { "SuppliersId", SuppliersId });
  641. parametersRecord.Add(new List<Object>() { "GoodsId", GoodsId });
  642. parametersRecord.Add(new List<Object>() { "PackId", GetPackId });//PackId
  643. parametersRecord.Add(new List<Object>() { "unit", GoodsSpec });
  644. parametersRecord.Add(new List<Object>() { "Meas", 1 });
  645. parametersRecord.Add(new List<Object>() { "BaseNum", GoodsGapNum });
  646. parametersRecord.Add(new List<Object>() { "Num", GoodsGapNum });
  647. parametersRecord.Add(new List<Object>() { "ExecNum", GoodsGapNum });
  648. parametersRecord.Add(new List<Object>() { "CancelNum", 0 });
  649. parametersRecord.Add(new List<Object>() { "Price", LastPrice });
  650. parametersRecord.Add(new List<Object>() { "Taxprice", LastPrice });
  651. parametersRecord.Add(new List<Object>() { "BasePrice", LastPrice });
  652. parametersRecord.Add(new List<Object>() { "BaseTaxprice", LastPrice });
  653. parametersRecord.Add(new List<Object>() { "DedRate", 0 });
  654. parametersRecord.Add(new List<Object>() { "Amount", LastPrice*GoodsGapNum});
  655. parametersRecord.Add(new List<Object>() { "Rate", 0 });
  656. parametersRecord.Add(new List<Object>() { "Tax", 0 });
  657. parametersRecord.Add(new List<Object>() { "TaxAmount", LastPrice * GoodsGapNum });
  658. parametersRecord.Add(new List<Object>() { "RetailP", 0 });
  659. parametersRecord.Add(new List<Object>() { "RetailAmt", 0 });
  660. parametersRecord.Add(new List<Object>() { "IsFree", 'N' });
  661. parametersRecord.Add(new List<Object>() { "IsDone", 'N' });
  662. parametersRecord.Add(new List<Object>() { "Remark", Remark });
  663. parametersRecord.Add(new List<Object>() { "DayTTNum", 0 });
  664. parametersRecord.Add(new List<Object>() { "DaySTNum", 0 });
  665. parametersRecord.Add(new List<Object>() { "DayNTNum", 0 });
  666. parametersRecord.Add(new List<Object>() { "DayHENum", 0 });
  667. parametersRecord.Add(new List<Object>() { "MinTaxPrice", 0 });
  668. parametersRecord.Add(new List<Object>() { "LastTaxPrice", 0 });
  669. parametersRecord.Add(new List<Object>() { "LastSupp", SuppliersId });
  670. parametersRecord.Add(new List<Object>() { "PlaceNum", 0 });//库管数量
  671. parametersRecord.Add(new List<Object>() { "PurSuppNum", 0 }); //在途数量
  672. parametersRecord.Add(new List<Object>() { "LackNum", PurchaseTotalNum });
  673. parametersRecord.Add(new List<Object>() { "songhts", 0 });//送货天数
  674. parametersRecord.Add(new List<Object>() { "SafeDays", SafeDays });//安全库存天数
  675. parametersRecord.Add(new List<Object>() { "PONum", 0 });//订货点
  676. parametersRecord.Add(new List<Object>() { "PushFeedbackId", PushFeedbackId });//订货点
  677. List<SqlParameter> parametersRecord1 = DataAccess.ToParameters(parametersRecord);
  678. int successRecord = DataAccess.ExecuteCommand(commandTextRecord, parametersRecord1, out resultRecord);
  679. resultdic.Add("successRecord", successRecord);
  680. resultdic.Add("resultRecord", resultRecord);
  681. #endregion
  682. return resultdic;
  683. }
  684. public static PushRecord GetRecord(string PushRecordId)
  685. {
  686. #region 获取 plan
  687. string commandTextContact = "Select * From " + Config.TablePrefix + "PushRecord " +
  688. "Where Id = @PushRecordId";
  689. string resultContact;
  690. DataTable dt = new DataTable();
  691. PushRecord feedback = null;
  692. List<List<Object>> parametersContact = new List<List<Object>>();
  693. if (PushRecordId != null)
  694. {
  695. parametersContact.Add(new List<Object>() { "PushRecordId", Guid.Parse(PushRecordId) });
  696. DataAccess.GetValues(commandTextContact, ref dt, DataAccess.ToParameters(parametersContact).ToArray(), out resultContact);
  697. }
  698. if (dt != null && dt.Rows.Count > 0)
  699. {
  700. List<PushRecord> feedbacks = (List<PushRecord>)ModelConvertHelper<PushRecord>.ConvertToModel(dt);
  701. return feedbacks.ToArray()[0];
  702. }
  703. #endregion
  704. return feedback;
  705. }
  706. public static PushRecord GetRecordByPushCode(string PushCode,int PushAccountId)
  707. {
  708. #region 获取 plan
  709. string commandTextContact = "Select * From " + Config.TablePrefix + "PushRecord " +
  710. "Where PushCode = @PushCode and PushAccountId = @PushAccountId";
  711. string resultContact;
  712. DataTable dt = new DataTable();
  713. PushRecord feedback = null;
  714. List<List<Object>> parametersContact = new List<List<Object>>();
  715. if (PushCode != null)
  716. {
  717. parametersContact.Add(new List<Object>() { "PushCode", PushCode });
  718. parametersContact.Add(new List<Object>() { "PushAccountId", PushAccountId });
  719. DataAccess.GetValues(commandTextContact, ref dt, DataAccess.ToParameters(parametersContact).ToArray(), out resultContact);
  720. }
  721. if (dt != null && dt.Rows.Count > 0)
  722. {
  723. List<PushRecord> feedbacks = (List<PushRecord>)ModelConvertHelper<PushRecord>.ConvertToModel(dt);
  724. return feedbacks.ToArray()[0];
  725. }
  726. #endregion
  727. return feedback;
  728. }
  729. public static IList<PushSupplyTotal> GetPushSupTotal(string filterstr = "")
  730. {
  731. #region 获取推送时间
  732. DataTable dt = new DataTable();
  733. string result;
  734. List<SqlParameter> parameters1 = new List<SqlParameter>(0);
  735. bool success = DataAccess.GetValues(
  736. "select * from " + Config.TablePrefix + "PushSupplyTotal where 1=1 " +
  737. filterstr, ref dt, parameters1.ToArray(), out result);
  738. // 把DataTable转换为IList<UserInfo>
  739. IList<PushSupplyTotal> psls = new List<PushSupplyTotal>();
  740. if (dt != null && dt.Rows.Count > 0)
  741. {
  742. // 把DataTable转换为IList<UserInfo>
  743. psls = ModelConvertHelper<PushSupplyTotal>.ConvertToModel(dt);
  744. }
  745. return psls;
  746. #endregion
  747. }
  748. /// <summary>
  749. /// 更新提报状态
  750. /// </summary>
  751. /// <param name="PushAccountId"></param>
  752. /// <param name="Id"></param>
  753. /// <returns></returns>
  754. public static int SubmitState(string PushAccountId, string Id)
  755. {
  756. #region 更新状态
  757. string commandTextState = "UPDATE " + Config.TablePrefix + "PushFeedback " +
  758. " SET SubmitTime = SubmitTime1, " +
  759. " SubmitPerson = SubmitPerson1, " +
  760. " State = 1 " +
  761. " FROM (SELECT " +
  762. "@SubmitTime as SubmitTime1," +
  763. "@SubmitPerson as SubmitPerson1" +
  764. " ) A" +
  765. " WHERE id= @PushFeedbackId";
  766. string resultState;
  767. //准备参数
  768. List<List<Object>> parametersState = new List<List<Object>>();
  769. parametersState.Add(new List<Object>() { "SubmitTime", DateTime.Now });
  770. parametersState.Add(new List<Object>() { "SubmitPerson", PushAccountId });
  771. parametersState.Add(new List<Object>() { "PushFeedbackId", Id });
  772. List<SqlParameter> parametersState1 = DataAccess.ToParameters(parametersState);
  773. int successState = DataAccess.ExecuteCommand(commandTextState, parametersState1, out resultState);
  774. #endregion
  775. return successState;
  776. }
  777. }
  778. }