目录
1、 WarehousingController
1.1、 保存采购入库单
1.1.1、 //单据类型
1.1.2、 //修改保存后的仓库ID
1.1.3、 //从某集合中删除与其另一个集合中相同的元素
using QXQPS.Models;
using QXQPS.Vo;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace QXQPS.Areas.AccessoriessalesManagment.Controllers
{
public class WarehousingController : Controller
{
QXQPEntities myModels = new Models.QXQPEntities();
public ActionResult listWarehou(List<PW_Incoming> listIncome, List<SYS_WarehousingDetail> WarehousingDetail)//保存采购入库单
{
Session["WarehousingDetail"] = WarehousingDetail;
var IncomingID = listIncome[0].IncomingID;
try
{
listIncome[0].DocumentsTypeID = 3;
listIncome[0].BalanceStateID = 2;//结算状态
if (IncomingID == 0)
{
myModels.PW_Incoming.Add(listIncome[0]);
}
else
{
myModels.Entry(listIncome[0]).State = System.Data.Entity.EntityState.Modified;
}
var list = myModels.PW_Incoming.Where(m => m.IncomingID == IncomingID).Select(m => new { m.WarehouseID }).SingleOrDefault();
if (myModels.SaveChanges() > 0)
{
var WarehouseID = listIncome[0].WarehouseID;
IncomingID = listIncome[0].IncomingID;
if (WarehousingDetail != null)
{
List<int> oldID = new List<int>();//保存原来ID的集合
List<int> newID = new List<int>();//保存从页面传来的新ID的集合
List<int> DeleteID = new List<int>();//保存要删除的ID的集合,通过 Except() 算出前面两个集合的相同的元素。
var ProDetail = myModels.SYS_WarehousingDetail.Where(m => m.IncomingID == IncomingID).Select(m => new { m.WarehousingDetailID }).ToList();
foreach (var item in ProDetail)
{
oldID.Add(item.WarehousingDetailID);
}
for (int i = 0; i < WarehousingDetail.Count(); i++)
{
WarehousingDetail[i].IncomingID = IncomingID;
var WarehousingDetailID = WarehousingDetail[i].WarehousingDetailID;
if (WarehousingDetailID == 0)
{
myModels.SYS_WarehousingDetail.Add(WarehousingDetail[i]);
}
else
{
newID.Add(WarehousingDetail[i].WarehousingDetailID);
myModels.Entry(WarehousingDetail[i]).State = System.Data.Entity.EntityState.Modified;
}
}
DeleteID = oldID.Except(newID).ToList();
foreach (var item in DeleteID)
{
var delete = myModels.SYS_WarehousingDetail.Where(m => m.WarehousingDetailID == item).Single();
myModels.SYS_WarehousingDetail.Remove(delete);
}
}
myModels.SaveChanges();
}
else
{
return Json(false, JsonRequestBehavior.AllowGet);
}
}
catch (Exception)
{
return Json(false, JsonRequestBehavior.AllowGet);
}
return Json(IncomingID, JsonRequestBehavior.AllowGet);
}