You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

346 lines
16 KiB

using CK.SCP.Controller;
using CK.SCP.Models;
using CK.SCP.Models.AppBoxEntity;
using CK.SCP.Models.Enums;
using CK.SCP.Models.ScpEntity;
using CK.SCP.Utils;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Data.Entity.Migrations;
using System.IO;
using System.Linq;
using System.Runtime.Serialization.Json;
using System.Text;
using System.Web;
using System.Web.Services;
namespace SCP
{
/// <summary>
/// WebService1 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。
// [System.Web.Script.Services.ScriptService]
public class WebService : System.Web.Services.WebService
{
public class result
{
public int code;
public string msg;
}
public class result3
{
public int code { get; set; }
public string msg { get; set; }
}
public class result1
{
public int code { get; set; }
public string msg { get; set; }
public int count { get; set; }
public string data { get; set; }
}
public class result2
{
public string Extend1 { get; set; }
public decimal AskQty { get; set; }
public decimal AsnQty { get; set; }
public decimal AreQty { get; set; }
}
[WebMethod]
public string getObjectByJson(string jsonString)
{
ResultObject<bool> _ret = new ResultObject<bool>();
try
{
var list = JsonConvert.DeserializeObject<List<V_TB_ASK_DETAIL>>(jsonString);
using (ScpEntities db = EntitiesFactory.CreateScpInstance())
{
List<string> ErrorList = new List<string>();
foreach (var ls in list)
{
String str = ls.PoBillNum.ToString();
String str1 = ls.VendId.ToString();
String str2 = ls.PartCode.ToString();
String str3 = ls.Extend1.ToString();
String str4 = ls.PoUnit.ToString();
var lsA = db.TB_PO.Count(p => p.PoBillNum == ls.PoBillNum && p.VendId == ls.VendId);
if (lsA == 0)
{
ErrorList.Add(string.Format("订单号【{0}】不存在", str));
}
var la = db.TB_ASK_DETAIL.Count(p => p.Extend1 == ls.Extend1);
if (la > 0)
{
ErrorList.Add(string.Format("唯一码【{0}】已经存在了", str3));
}
var ls1 = db.TA_PART.Count(P => P.PartCode == ls.PartCode);
if (ls1 == 0)
{
ErrorList.Add(string.Format("零件号【{0}】不存在", str2));
}
var Unit = db.TA_PART.Count(P => P.PartCode == ls.PartCode && P.Unit == ls.PoUnit);
if (Unit == 0)
{
ErrorList.Add(string.Format("零件号【{0}】单位不对", str2));
}
var ved = db.TB_PO_DETAIL.Count(p => p.PoBillNum == ls.PoBillNum && p.PartCode == ls.PartCode);
if (ved == 0)
{
ErrorList.Add(string.Format("订单号【{0}】中不存在零件号【{1}】", str1, str2));
}
else
{
var lv = db.TB_PO_DETAIL.SingleOrDefault(p => p.PoBillNum == ls.PoBillNum && p.PartCode == ls.PartCode);
if (lv.PlanQty < ls.AskQty)
{
ErrorList.Add(string.Format("订单号【{0}】中零件号【{1}】的要货数量超过SCP中的最大要货数量", str1, str2));
}
}
}
string st = string.Join(",", ErrorList.ToArray());
result co = new result();
if (ErrorList.Count == 0)
{
foreach (var ls in list)
{
var lt = db.TB_ASK.Count(p => p.PoBillNum == ls.PoBillNum && p.EndTime == ls.EndTime && p.VendId == ls.VendId);
var orderlist = list.GroupBy(p => p.PoBillNum).ToList();
orderlist.ForEach((p) =>
{
var list1 = p.ToList();
if (list1.Count > 0)
{
TB_ASK ASK = new TB_ASK();
ASK.AskBillNum = SCP_BILLCODE_CONTROLLER.MakeASKCode1();
ASK.PoBillNum = ls.PoBillNum;
ASK.VendId = ls.VendId;
ASK.Site = "BJBMPT";
ASK.CreateTime = ls.CreateTime;
ASK.CreateUser = ls.CreateUser;
ASK.UpdateTime = DateTime.Now;
ASK.UpdateUser = ls.CreateUser;
ASK.IsDeleted = false;
ASK.GUID = Guid.NewGuid();
ASK.State = (int)AskState.Release;
ASK.ModType = 1;
ASK.BeginTime = ls.CreateTime;
ASK.EndTime = ls.EndTime;
ASK.ErpBillNum = ls.PoBillNum;
ASK.Buyer = ls.CreateUser;
ASK.SubSite = ls.SubSite;
ASK.Remark = ls.Remark;
db.TB_ASK.AddOrUpdate(ASK);
db.SaveChanges();
list.ForEach((itm) =>
{
TB_ASK_DETAIL ASKK = new TB_ASK_DETAIL();
ASKK.AskBillNum = ASK.AskBillNum;
ASKK.PoBillNum = ls.PoBillNum;
ASKK.PartCode = ls.PartCode;
var pline = db.TB_PO_DETAIL.SingleOrDefault(t => t.PartCode == ls.PartCode && t.PoBillNum == ls.PoBillNum);
ASKK.PoLine = pline.PoLine;
ASKK.Currency = "CNY";
ASKK.Price = pline.Price;
ASKK.AskQty = ls.AskQty;
ASKK.BeginTime = DateTime.Now;
ASKK.EndTime = ls.EndTime;
ASKK.PoUnit = ls.PoUnit;
ASKK.LocUnit = ls.PoUnit;
ASKK.State = (int)AskState.Release;
ASKK.CreateTime = ls.CreateTime;
ASKK.CreateUser = ls.CreateUser;
ASKK.IsDeleted = false;
ASKK.GUID = Guid.NewGuid();
ASKK.SubSite = ls.SubSite;
ASKK.Site = "BJBMPT";
ASKK.Extend1 = ls.Extend1.ToString();
db.TB_ASK_DETAIL.AddOrUpdate(ASKK);
db.SaveChanges();
ErrorList.Add(string.Format("数据无误,插入成功"));
co.msg = "数据无误,插入成功";
co.code = 0;
});
}
});
}
}
else
{
co.msg = st;
co.code = 1;
}
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(result));
//创建存储区为内存流
System.IO.MemoryStream ms = new MemoryStream();
//将json字符串写入内存流中
serializer.WriteObject(ms, co);
System.IO.StreamReader reader = new StreamReader(ms);
ms.Position = 0;
string strRes = reader.ReadToEnd();
reader.Close();
ms.Close();
return strRes;
}
}
catch (Exception e)
{
_ret.State = ReturnStatus.Failed;
LogHelper.Writlog(LogHelper.LogType.Error, typeof(WebService), "WebService", e.Message);
_ret.Result = false;
_ret.ErrorList.Add(e);
result3 co1 = new result3();
co1.code = 1;
co1.msg = e.ToString();
String string_json_txt = Newtonsoft.Json.JsonConvert.SerializeObject(co1);
return string_json_txt;
}
}
[WebMethod]
public string SeachQueryOut(string jsonString)
{
ResultObject<bool> _ret = new ResultObject<bool>();
try
{
using (ScpEntities db = EntitiesFactory.CreateScpInstance())
{
List<result2> ErrorList3 = new List<result2>();
List<result1> ErrorList2 = new List<result1>();
var list = JsonConvert.DeserializeObject<V_TB_ASK_DETAIL>(jsonString);
List<string> ErrorList = new List<string>();
var Sub = list.Extend1;
Sub.Split();
int count1 = 0;
List<string> result = Sub.Split(',').ToList();
foreach (var Subsite in result)
{
var lssk = db.TB_ASK_DETAIL.Count(p => p.Extend1 == Subsite);
if (lssk == 0)
{
//result1 co1 = new result1();
string strd = null;
//string strd3 = strd1 + strd + strd2;
}
else
{
var ls1 = db.TB_ASN_DETAIL.Count(p => p.Extend1 == Subsite);
decimal AskQty = 0;
decimal AsnQty = 0;
decimal AreQty = 0;
if (ls1 > 0)
{
var ls2 = db.TB_ASK_DETAIL.SingleOrDefault(p => p.Extend1 == Subsite);
AskQty = ls2.AskQty;
AsnQty = 0;
AreQty = 0;
}
if (ls1 == 0)
{
var ls5 = db.TB_ASK_DETAIL.SingleOrDefault(p => p.Extend1 == Subsite);
AskQty = ls5.AskQty;
AsnQty = 0;
AreQty = 0;
}
else if (ls1 == 1)
{
var _lst = db.TB_ASN_DETAIL.SingleOrDefault(p => p.Extend1 == Subsite);
var ask = db.TB_ASK_DETAIL.SingleOrDefault(p => p.Extend1 == Subsite);
var _ly = db.TB_RECEIVE_DETAIL.Count(p => p.PoBillNum == _lst.PoBillNum && p.PartCode == _lst.PartCode);
if (_ly == 1)
{
var _ly2 = db.TB_RECEIVE_DETAIL.SingleOrDefault(p => p.PoBillNum == _lst.PoBillNum && p.PartCode == _lst.PartCode);
AreQty = _ly2.Qty;
AsnQty = _lst.Qty;
AskQty = ask.AskQty - _lst.Qty - _ly2.Qty;
}
}
else if (ls1 > 1)
{
var asn = db.TB_ASN_DETAIL.Where(p => p.Extend1 == Subsite).ToList();
var Amount = asn.Sum(t => t.Qty);
AsnQty = Amount;
var arr = asn.First();
var arr1 = db.TB_RECEIVE_DETAIL.Where(p => p.PoBillNum == arr.PoBillNum && p.PartCode == arr.PartCode).ToList();
var cc = arr1.Sum(t => t.Qty);
AreQty = cc;
var ask = db.TB_ASK_DETAIL.SingleOrDefault(p => p.Extend1 == Subsite);
AskQty = ask.AskQty - cc - Amount;
//string st = string.Join(",", ErrorList.ToArray());
}
result2 sum = new result2();
sum.Extend1 = Subsite;
sum.AskQty = AskQty;
sum.AsnQty = AsnQty;
sum.AreQty = AreQty;
//ErrorList3.Add(sum);
String string_json = Newtonsoft.Json.JsonConvert.SerializeObject(sum);
result1 co1 = new result1();
string strr = string_json;
ErrorList.Add(strr);
count1++;
}
}
String string_json_txt1 = Newtonsoft.Json.JsonConvert.SerializeObject(ErrorList);
result1 co2 = new result1();
co2.code = 0;
co2.msg = "查询成功";
co2.count = count1;
co2.data = string_json_txt1;
String string_json_txt = Newtonsoft.Json.JsonConvert.SerializeObject(co2);
string str = string_json_txt.Substring(1, string_json_txt.Length - 1);
string str1 = str.Remove(str.Length - 1, 1);
if (str1.Contains("data\":\"["))
{
str1 = str1.Replace("data\":\"[", "data\":[");
}
str1 = str1.Replace("\\", "");
str1 = str1.Replace("\"{", "{\"");
str1 = str1.Replace("}\"", "\"}");
//str1 = str1.;
str1 = str1.Substring(0, str1.Length - 2) + "}";
return str1;
}
}
catch (Exception e)
{
_ret.State = ReturnStatus.Failed;
LogHelper.Writlog(LogHelper.LogType.Error, typeof(WebService), "WebService", e.Message);
_ret.Result = false;
_ret.ErrorList.Add(e);
result3 co1 = new result3();
co1.code = 1;
co1.msg = e.ToString();
String string_json_txt = Newtonsoft.Json.JsonConvert.SerializeObject(co1);
return string_json_txt;
}
}
}
}