华恒Mes鼎捷代码
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.

140 lines
5.4 KiB

using ICSSoft.Base.Config.AppConfig;
using ICSSoft.Frame.Data.Entity;
using ICSSoft.Frame.Data.Entity.OM_PO;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
namespace ICSSoft.Frame.Data.DAL
{
public static class ICSIntSupCalDAL
{
public static void Delete(List<string> id, string conn) {
FramDataContext frame = new FramDataContext(conn);
frame.Connection.Open();
frame.Transaction = frame.Connection.BeginTransaction();
try {
var cal = frame.ICSIntSupCalLog.Where(a => id.Contains(a.id)).Select(a => a);
frame.ICSIntSupCalLog.DeleteAllOnSubmit(cal);
frame.SubmitChanges();
frame.Transaction.Commit();
}
catch (Exception ex) {
frame.Transaction.Rollback();
throw ex;
}
}
#region 内部供应商结算
public static void Calculate(List<ICSIntSupCalLog> list,string conn)
{
FramDataContext db = new FramDataContext(conn);
db.Connection.Open();
db.Transaction = db.Connection.BeginTransaction();
try
{
string cIWhCode = ConfigurationManager.AppSettings["WHICode"].ToString();
string cOWhCode = ConfigurationManager.AppSettings["WHOCode"].ToString();
List<OM_POmain> headList = new List<OM_POmain>();
OM_POmain head = new OM_POmain();
string key = "";
foreach (var info in list)
{
var MO = db.ICSMO.Where(a => a.MOCODE == info.Mocode && a.MOSEQ == info.Moseq).Select(a => a).FirstOrDefault();
if (headList.Where(a => a.MODId == MO.ID && a.POID == info.Pocode.Split('-')[0]).FirstOrDefault() == null)
{
head = new OM_POmain();
head.UserCode = AppConfig.UserName;
head.POID = info.Pocode.Split('-')[0];
head.cIWhCode = cIWhCode;
head.cOWhCode = cOWhCode;
head.MODId = MO.ID;
head.list = new List<OM_PODetails>();
headList.Add(head);
}
else
{
head = headList.Where(a => a.MODId == MO.ID && a.POID == info.Pocode.Split('-')[0]).FirstOrDefault();
}
OM_PODetails body = new OM_PODetails();
body.ID = info.Pocode.Split('-')[1];
body.cInvCode = MO.ITEMCODE+"_"+info.Opcode;
body.iQuantity = Convert.ToDecimal(info.Prqty);
body.iNum = Decimal.Parse(info.Moseq);
head.list.Add(body);
}
string Istr = JsonConvert.SerializeObject(headList);
string iresult = HttpPost(System.Configuration.ConfigurationSettings.AppSettings["APIURL"].ToString() + "APIOM_POMain1", Istr);
//string iresult = HttpPost("http://localhost:51182/api/" + "APIOM_POMain1", Istr);
Result INVOUTResult = new Result();
INVOUTResult = JsonConvert.DeserializeObject<Result>(iresult);
if (INVOUTResult.code != "200")
{
throw new Exception(INVOUTResult.msg);
}
//内部供应商结算
List<String> id = list.Select(a => a.id).ToList();
var c=db.ICSIntSupCalLog.Where(a => id.Contains(a.id));
foreach (ICSIntSupCalLog sup in c) {
sup.ISInput = true;
db.SubmitChanges();
}
db.Transaction.Commit();
}
catch (Exception ex)
{
db.Transaction.Rollback();
throw ex;
}
}
#endregion
public static string HttpPost(string url, string body)
{
try
{
System.Text.Encoding encoding = Encoding.UTF8;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.Accept = "application/json, text/javascript, */*"; //"text/html, application/xhtml+xml, */*";
request.ContentType = "application/json; charset=utf-8";
byte[] buffer = encoding.GetBytes(body);
request.ContentLength = buffer.Length;
request.GetRequestStream().Write(buffer, 0, buffer.Length);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding))
{
return reader.ReadToEnd();
}
}
catch (WebException ex)
{
var res = (HttpWebResponse)ex.Response;
StringBuilder sb = new StringBuilder();
StreamReader sr = new StreamReader(res.GetResponseStream(), Encoding.UTF8);
sb.Append(sr.ReadToEnd());
throw new Exception(sb.ToString());
}
}
}
}