123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562 |
- using JCSoft.WX.Framework.Api;
- using Microsoft.AspNetCore.Mvc;
- using Microsoft.AspNetCore.Http;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Threading.Tasks;
- using Common.Wechat;
- using Common;
- using System.Data;
- using ZcPeng.PublicLibrary;
- using CoreEntity.Entity;
- using Common.Model;
- using Newtonsoft.Json.Converters;
- using Newtonsoft.Json;
- using CoreEntity.DAL;
- using System.Data.SqlClient;
- using PublicLibrary.Model;
- using Microsoft.Extensions.Caching.Memory;
- using System.Globalization;
- using SupplierWeb.Codes.mvc;
- namespace SupplierWeb.Controllers
- {
- [Route("web/supplypush")]
- public class SupplyPushController : BaseController
- {
- public SupplyPushController(IMemoryCache cache, IApiClient client) : base(cache, client)
- {
- }
- ////根据采购计划-批量提交供货情况:添加提交状态 时间后 状态设置1
- [AuthPermission]
- [HttpPost, Route("editfeedback")]
- public JsonResult EditFeedback(string Id,
- PushFeedback[] pfbs,
- [FromBody]dynamic data)
- {
- string userids;
- userids = getStaff("userid");
- //判断参数是否合法
- if (string.IsNullOrEmpty(userids))
- {
- return Json(new
- {
- success = 0,
- msg="timeout 登陆超时",
- timeout =1
- });
- }
- int PushAccountId = Convert.ToInt32(userids);
- if (data != null)
- {
- //Newtonsoft.Json.Linq.JArray
- Id = data.Id;
- pfbs = data.pfbs.ToObject<PushFeedback[]>();
- }
- string PushRecordId = Id;
- PushRecord rec = PushRecordDAL.GetRecord(Id);
- if (rec != null && rec.State == 1)
- return Json(new
- {
- success = 0,
- msg = "已经提交过!"
- });
- List<DataAccessCommand> list = new List<DataAccessCommand>();
- //int successAll = 1;
- #region 更新记录状态
- string commandTextStateR = "UPDATE " + Config.TablePrefix + "PushRecord " +
- " SET SubmitTime = @SubmitTime, " +
- " SubmitPerson = @SubmitPerson, " +
- " State = 1 " +
- " WHERE Id = @PushRecordId " +
- " and PushAccountId = @PushAccountId " +
- " and (state IS NULL or state = 0)" +
- " and Id = @Id "
- ;
- //string resultStateR;
- //准备参数
- List<List<Object>> parametersStateR = new List<List<Object>>();
- parametersStateR.Add(new List<Object>() { "SubmitTime", DateTime.Now });
- parametersStateR.Add(new List<Object>() { "SubmitPerson", PushAccountId });
- parametersStateR.Add(new List<Object>() { "PushRecordId", PushRecordId });
- parametersStateR.Add(new List<Object>() { "PushAccountId", PushAccountId });
- parametersStateR.Add(new List<Object>() { "Id", Id });
- List<SqlParameter> parametersStateR1 = DataAccess.ToParameters(parametersStateR);
- list.Add(new DataAccessCommand(commandTextStateR, parametersStateR1, CommandType.Text, true));
- //int successStateR = DataAccess.ExecuteCommand(commandTextStateR, parametersStateR1, out resultStateR);
- //if (((string)resultStateR).StartsWith("在执行数据操作时发生错误"))
- //{
- // successAll = 0;
- //}
- #endregion
-
- string resultState;
- #region 更新记录状态
- foreach (PushFeedback pfb in pfbs) {
- int state = 1;
- if(pfb.StoreGapNum == 0)
- {
- //string contactid = "";
- //if (pfb.ContactId.Split("_").Length > 0)
- // contactid = pfb.ContactId.Split("_")[0];
- //ContactDAL.UpdatePushContactState(pfb.GoodsId, contactid, pfb.SuppliersId.Trim(), "N");
- }
- if (pfb.StoreGapNum < pfb.PurchaseTotalNum)
- {
- state = 2;
- }
- string commandTextState = "UPDATE " + Config.TablePrefix + "PushFeedBack " +
- " SET " +
- " StoreGapNum = @StoreGapNum, " +
- " Feedback = @Feedback, " +
- " SubmitTime = @SubmitTime, " +
- " SubmitPerson = @SubmitPerson, " +
- " State = " + state +","+
- " IsCancel = 0 " +
- " WHERE PushRecordId = @PushRecordId " +
- " and Id = @PushFeedbackId "+
- " and PushAccountId = @PushAccountId "+
- " and (state IS NULL or state = 0 or state in(5,6))"
- ;
- //准备参数
- List<List<Object>> parametersState = new List<List<Object>>();
- parametersState.Add(new List<Object>() { "StoreGapNum", pfb.StoreGapNum });
- parametersState.Add(new List<Object>() { "Feedback", pfb.Feedback });
- parametersState.Add(new List<Object>() { "SubmitTime", DateTime.Now });
- parametersState.Add(new List<Object>() { "SubmitPerson", PushAccountId });
- parametersState.Add(new List<Object>() { "PushRecordId", PushRecordId });
- parametersState.Add(new List<Object>() { "PushFeedbackId", pfb.Id });
- parametersState.Add(new List<Object>() { "PushAccountId", pfb.PushAccountId });
- List<SqlParameter> parametersState1 = DataAccess.ToParameters(parametersState);
- list.Add(new DataAccessCommand(commandTextState, parametersState1, CommandType.Text, true));
- //int successState = DataAccess.ExecuteCommand(commandTextState, parametersState1, out resultState);
- //if (((string)resultState).StartsWith("在执行数据操作时发生错误"))
- //{
- // successAll = 0;
- //}
- }
- #endregion
- bool successAll = DataAccess.ExecuteBatchCommands(list, out resultState);
- return Json(new
- {
- success = successAll,
- msg = resultState,
- });
- }
- ///供应商业务员二次确认:生成采购订单 开发票
- ///1 供应商业务员确认(数量提交确认) 2 供应商业务员取消 3 采购员确认(生成计划)
- ///4 供应商业务员确认(二次确认 开票 生成采购订单)
- ///如果修改了数据(设置状态为2 按钮显示:修改并提交) 需要重新提交
- [AuthPermission]
- [HttpPost, Route("confirmfeedback/{staffId}/{State:int}")]
- public JsonResult ConfirmFeedback(string Id,
- Int32 State,
- PushFeedbackExt[] pfbs,
- string staffId,
- [FromBody]dynamic data)
- {
- string userids;
- string LoginAccountId = userids = getStaff("userid");
- //判断参数是否合法
- if (string.IsNullOrEmpty(userids))
- {
- return Json(new
- {
- success = 0,
- msg = "登陆超时",
- timeout = 1
- });
- }
- Int32 PushAccountId = Convert.ToInt32(userids);
- if (data != null)
- {
- //Newtonsoft.Json.Linq.JArray
- Id = data.Id;
- pfbs = data.pfbs ==null?new PushFeedbackExt[] { } : data.pfbs.ToObject<PushFeedbackExt[]>();
- }
- PushRecord rec = PushRecordDAL.GetRecord(Id);
- if (rec != null && rec.HasOrder == 1)
- return Json(new
- {
- success = 0,
- msg = "已经全部生成采购订单!"
- });
- //List<PushFeedbackExt> listAll = PushFeedBackDAL.GetFeedbacks(Id, " and PushAccountId = "+ PushAccountId);
- List<PushFeedbackExt> list = PushFeedBackDAL.GetFeedbacks(Id, " and state in (3,2) and PushAccountId = "+ PushAccountId);
- Dictionary<string, List<PushFeedbackExt>> groups = new Dictionary<string, List<PushFeedbackExt>>();
- foreach (PushFeedbackExt fb in list)
- {
- //初始化requestDate
- foreach(PushFeedbackExt fb0 in pfbs)
- {
- if (fb0.Id.Equals(fb.Id))
- {
- //fb.StoreGapNum = fb0.StoreGapNum;
- //fb.Feedback = fb0.Feedback;
- fb.ReceiptMd = fb0.ReceiptMd;
- fb.RequestDate = fb0.RequestDate;
- }
- }
- //第一次初始化对方业务员(不是销售代表)id
- if (string.IsNullOrEmpty(fb.OppContId))
- {
- var c = ContactDAL.getOppContactor(fb.BusinessId);
- fb.OppContId = c!=null?c.ContactId:"";
- }
- //if (fb.StoreGapNum > 0) {
- ContactDoc cd = ContactDAL.getContactor(fb.ContactId);
- string SuppliersId = fb.SuppliersId;
- if (cd != null)
- SuppliersId = cd.BusinessId;
- fb.SuppliersId = SuppliersId;
- fb.BusinessId = SuppliersId;
- var accountSuppliers = fb.PushAccountId + "_" + fb.SuppliersId;
- if (groups.ContainsKey(accountSuppliers))
- {
- List<PushFeedbackExt> to;
- groups.TryGetValue(accountSuppliers, out to);
- to.Add(fb);
- groups.Remove(accountSuppliers);
- groups.Add(accountSuppliers, to);
- }
- else
- {
- List<PushFeedbackExt> to = new List<PushFeedbackExt>();
- to.Add(fb);
- groups.Add(accountSuppliers, to);
- }
- //}
- }
-
- //List<Object> result = new List<object>();
- List<DataAccessCommand> listcmd = new List<DataAccessCommand>();
- foreach (string groupkey in groups.Keys)
- {
- IDictionary<string, Object> dic = new Dictionary<string, Object>();
- List<PushFeedbackExt> to;
- groups.TryGetValue(groupkey, out to);
- PushFeedbackExt fb0 = to.ToArray()[0];//根据第一条明细找到 当前业务员,供应商的采购计划
- bool hasPlan = false;
- foreach (PushFeedbackExt feedback in to)
- {
- if (feedback.StoreGapNum > 0)
- hasPlan = true;
- }
- PurPlanMT PlanMT = null;
- //string StaffDocId = PlanMT.SaleManId;
- //待更新状态
- Int32 OrderBillNo = 0;
- Int32 OrderBillCodeNo = 0;
- if (State == 4 )//生成采购订单
- {
- //查询 plan
- #region 获取 plan
- if (!hasPlan)
- {
- continue;
- }
- var planlist = PurPlanDAL.GetPlanMT(Id, fb0.Id.ToString(), PushAccountId, fb0.SuppliersId).ToArray();
- PlanMT = planlist[0];
- //string reqdate = PlanMT.EndDate;
- decimal PrepayAmt = PlanMT.PrepayAmt;
- string IsPrepay = PlanMT.IsPrepay;
- #endregion
- #region 更新 plan 增加要求日期 发货方式
- string commandTextRecord = "UPDATE PurPlanMT " +
- " SET " +
- " ReceiptMd = @ReceiptMd, " +
- " EndDate = @EndDate " +
- " WHERE PushRecordId= @RecordId" +
- " and SuppliersId= @SuppliersId" +
- " and BillState= 0" +
- " and PurObj = @PurObj ";
- //string resultPlan;
- //准备参数
- List<List<Object>> parametersRecord = new List<List<Object>>();
- parametersRecord.Add(new List<Object>() { "ReceiptMd", fb0.ReceiptMd });
- parametersRecord.Add(new List<Object>() { "EndDate", fb0.RequestDate.ToString("yyyy-MM-dd") });
- parametersRecord.Add(new List<Object>() { "RecordId", fb0.PushRecordId });
- parametersRecord.Add(new List<Object>() { "SuppliersId", fb0.SuppliersId });
- parametersRecord.Add(new List<Object>() { "PurObj", PushAccountId });
- List<SqlParameter> parametersRecord1 = DataAccess.ToParameters(parametersRecord);
- listcmd.Add(new DataAccessCommand(commandTextRecord, parametersRecord1));
- //int successPlan = DataAccess.ExecuteCommand(commandTextRecord, parametersRecord1, out resultPlan);
- //result.Add(successPlan);
- //result.Add(resultPlan);
- #endregion
- dic = PurOrderDAL.AddOrder(PushAccountId.ToString(),
- PlanMT.BillNo.ToString()
- , fb0.EntId, fb0.ReceiptMd, PlanMT.CentPayMd
- , PlanMT.OrgId, PlanMT.DeptId
- , "", fb0.Remark
- , fb0.GoodsId, fb0.SuppliersId
- , fb0.BusinessId, fb0.BusinessCode
- , PlanMT.SaleManId
- , fb0.RequestDate.ToString("yyyy-MM-dd")
- , fb0.ContactId
- , out OrderBillNo
- , out OrderBillCodeNo
- , PrepayAmt
- , IsPrepay
- , fb0.OppContId
- , listcmd);
- //result.Add(dic);
- if (OrderBillNo == 0|| OrderBillCodeNo == 0)
- {
- return Json(new
- {
- success = 0,
- result = (OrderBillNo == 0)?"获取billno自增失败": "获取OrderBillCodeNo自增失败",
- //successTemp = successTemp
- });
- }
- //Object successRecord;
- //dic.TryGetValue("successRecord", out successRecord);
- //if ((int)successRecord == 0) successTemp = 0;
- }
- else if(State == 2 )
- {
- if(PurPlanDAL.GetPlanMT(Id,"", PushAccountId, fb0.SuppliersId).Count > 0)
- {
- var deleteSuccess = PurPlanDAL.UpdatePlanDelete(fb0.SuppliersId, Id, PushAccountId, listcmd);
- }
- //if ((int)deleteSuccess == 0) successTemp = 0;
- }
- int index = 1;
- //string fieldTime = string.Empty;
- //string fieldPerson = string.Empty;
- //string fieldFilter = string.Empty;
- foreach (PushFeedbackExt feedback in to)
- {
- if (State == 2)//修改数据
- {
- //fieldIsComplete = ",IsComplete = 0 ";
- //state = 2;
- //fieldFilter = " AND ((State = 0 OR State IS NULL) OR State in(5,6,3)) " +
- // " AND PushAccountId=" + PushAccountId;
- #region 更新记录状态
- //string resultState;
- foreach (PushFeedbackExt pfb in pfbs)
- {
- if (pfb.Id.Equals(feedback.Id)) {
- //如果推送数量是0, 推送状态保持为推送 选下一个人
- string contactid = pfb.ContactId;
- if (pfb.StoreGapNum == 0)
- {
- //ContactDAL.UpdatePushContactState(pfb.GoodsId, contactid, pfb.SuppliersId.Trim(), "Y",listcmd);//生成计划时设置推送状态 Y 这里不需要
- }
- else
- {//不为0 推送状态设N 生成订单算在途
- ContactDAL.UpdatePushContactState(pfb.GoodsId, contactid, pfb.SuppliersId.Trim(), "N", listcmd);
- }
-
- int state_pfb = 1;
- if (pfb.StoreGapNum < pfb.PurchaseTotalNum)
- {
- state_pfb = 2;
- }
- if(pfb.StoreGapNum == 0 && feedback.StoreGapNum == 0)//本来没有货不用改
- { }
- else {
- string commandTextState = "UPDATE " + Config.TablePrefix + "PushFeedBack " +
- " SET " +
- " IsComplete = 0, " +
- " StoreGapNum = @StoreGapNum, " +
- " Feedback = @Feedback, " +
- " SubmitTime = @SubmitTime, " +
- " SubmitPerson = @SubmitPerson, " +
- " State = " + state_pfb +
- " WHERE PushRecordId = @PushRecordId " +
- " and Id = @PushFeedbackId " +
- " and PushAccountId = @PushAccountId " +
- " and (state in(3,2))"
- ;
- //准备参数
- List<List<Object>> parametersState = new List<List<Object>>();
- parametersState.Add(new List<Object>() { "StoreGapNum", pfb.StoreGapNum });
- parametersState.Add(new List<Object>() { "Feedback", pfb.Feedback });
- parametersState.Add(new List<Object>() { "SubmitTime", DateTime.Now });
- parametersState.Add(new List<Object>() { "SubmitPerson", PushAccountId });
- parametersState.Add(new List<Object>() { "PushRecordId", pfb.PushRecordId });
- parametersState.Add(new List<Object>() { "PushFeedbackId", pfb.Id });
- parametersState.Add(new List<Object>() { "PushAccountId", pfb.PushAccountId });
- List<SqlParameter> parametersState1 = DataAccess.ToParameters(parametersState);
- listcmd.Add(new DataAccessCommand(commandTextState, parametersState1, CommandType.Text, true));
- //int successState = DataAccess.ExecuteCommand(commandTextState, parametersState1, out resultState);
- //if (((string)resultState).StartsWith("在执行数据操作时发生错误"))
- //{
- // successAll = 0;
- //}
- }
- }
- }
- #endregion
- }
- //#endregion
- //else
- //if (State == 1)//提交供货数量信息
- //{
- // fieldTime = "SubmitTime";
- // fieldPerson = "SubmitPerson";
- // state = 1;
- // fieldFilter = " AND (State = 0 OR State IS NULL OR State in(5,6) )";
- //}
- else
- if (State == 4)//生成采购订单
- {
- string contactid = feedback.ContactId.Trim();
- //生成订单计算在途了推送状态全部设置为N
- ContactDAL.UpdatePushContactState(feedback.GoodsId, contactid, feedback.SuppliersId.Trim(), "N",listcmd);
- #region
- if (feedback.State == 3 ) {
- PurPlanDT plandt = PurPlanDAL.GetPlanDT(PlanMT.BillNo, feedback.Id.ToString()).ToArray()[0];
- //Object successo;
- //dic.TryGetValue("successRecord", out successo);
- //if ((int)successo > 0)
- //{
- IDictionary<string, Object> dicODAdd = PurOrderDAL.AddOrderDT(OrderBillNo, index,
- PlanMT.BillNo, plandt.BillSn, PlanMT.BillCode,
- feedback.GoodsId, feedback.GoodsSpec, feedback.StoreGapNum,
- feedback.ActPrice,
- feedback.PurPrice,
- feedback.Remark,
- PlanMT.EntId, PlanMT.OrgId,
- feedback.BusinessId, feedback.BusinessCode,
- feedback.SuppliersId,
- feedback.PurchaseTotalNum,
- plandt.SafeDays
- , PlanMT.SaleManId
- , listcmd);
- //result.Add(dicODAdd);
- //Object successRecord;
- //dicODAdd.TryGetValue("successRecord", out successRecord);
- //if ((int)successRecord > 0)
- //{
- //增加更新hasOrder状态 和feedback记录的状态state
- int successOState = PurOrderDAL.UpdateOrderState(feedback.Id.ToString(), Id,PushAccountId,listcmd);
- //result.Add(successOState);
-
- }
- }
- #endregion
- index += 1;
- }
- }
- if (State == 4)
- {
- var tostate = 4;
- #region 更新
- string commandText = "UPDATE " + Config.TablePrefix + "PushRecord " +
- " SET " +
- "ConfirmOrderTime = @ConfirmOrderTime, " +
- " ConfirmOrderPerson = @ConfirmOrderPerson, " +
- " HasOrder = 1, " +
- " State = @state " +
- " WHERE id= @Id " +
- " AND State = 3 " +
- " AND PushAccountId=" + PushAccountId;
- ;
- //string resultUp;
- //准备参数
- List<List<Object>> parameters = new List<List<Object>>();
- parameters.Add(new List<Object>() { "ConfirmOrderTime", DateTime.Now });
- parameters.Add(new List<Object>() { "ConfirmOrderPerson", PushAccountId });
- parameters.Add(new List<Object>() { "state", tostate });
- parameters.Add(new List<Object>() { "Id", Id });
- List<SqlParameter> parameters1 = DataAccess.ToParameters(parameters);
- listcmd.Add(new DataAccessCommand(commandText, parameters1));
- //int success = DataAccess.ExecuteCommand(commandText, parameters1, out resultUp);
- //result.Add(success);
- //result.Add(resultUp);
- #endregion
- }
- if (State == 2)
- {
- var tostate = 2;
- #region 更新记录
- string commandTextFeed = "UPDATE " + Config.TablePrefix + "PushRecord " +
- " SET " +
- "IsComplete = 0, " +
- " State = @state" +
- " WHERE Id= @Id " +
- " AND ((State = 0 OR State IS NULL) OR State in(5,6,3,2)) " +
- " AND PushAccountId=" + PushAccountId;
- //string resultFeed;
- //准备参数
- List<List<Object>> parametersFeed = new List<List<Object>>();
- parametersFeed.Add(new List<Object>() { "state", tostate });
- parametersFeed.Add(new List<Object>() { "Id", Id });
- List<SqlParameter> parametersFeed1 = DataAccess.ToParameters(parametersFeed);
- listcmd.Add(new DataAccessCommand(commandTextFeed, parametersFeed1));
- //int successFeed = DataAccess.ExecuteCommand(commandTextFeed, parametersFeed1, out resultFeed);
- //result.Add(successFeed);
- //result.Add(resultFeed);
- #endregion
- }
- string resultstr;
- bool success = DataAccess.ExecuteBatchCommands(listcmd,out resultstr);
- return Json(new
- {
- success = success,
- result = resultstr,
- //successTemp = successTemp
- });
- }
- }
- }
|