661 lines
30 KiB
C#
661 lines
30 KiB
C#
using EmitMapper;
|
|
using FineUIPro;
|
|
using MiniExcelLibs;
|
|
using Model;
|
|
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
|
|
|
|
namespace BLL
|
|
{
|
|
|
|
public static class PhtglInvoiceService
|
|
{
|
|
/// <summary>
|
|
/// 已导入
|
|
/// </summary>
|
|
public static int StateDataIn = -1;
|
|
/// <summary>
|
|
/// 已创建入库订单
|
|
/// </summary>
|
|
public static int StateCreate = 0;
|
|
/// <summary>
|
|
/// 入库审核
|
|
/// </summary>
|
|
public static int StateInPutApprove = 1;
|
|
/// <summary>
|
|
/// 入库审核拒绝
|
|
/// </summary>
|
|
public static int StateInPutApproveRefuse = 2;
|
|
/// <summary>
|
|
/// 入库审核成功
|
|
/// </summary>
|
|
public static int StateInPutApproveSuccess = 3;
|
|
/// <summary>
|
|
/// 出库审核中
|
|
/// </summary>
|
|
public static int StateOutPutApprove = 4;
|
|
/// <summary>
|
|
/// 出库审核拒绝
|
|
/// </summary>
|
|
public static int StateOutPutApproveRefuse = 5;
|
|
/// <summary>
|
|
/// 出库审核成功
|
|
/// </summary>
|
|
public static int StateOutPutApproveSuccess = 6;
|
|
|
|
public static string GetState(object invoiceId)
|
|
{
|
|
string result = "";
|
|
if (invoiceId != null && !string.IsNullOrEmpty(invoiceId.ToString()))
|
|
{
|
|
var InvoiceId = invoiceId.ToString();
|
|
|
|
var model = GetPHTGL_InvoiceById(InvoiceId);
|
|
var approveModel = PHTGL_ApproveService.GetPHTGL_ApproveByContractId(InvoiceId);
|
|
|
|
switch (model.State)
|
|
{
|
|
case -1:
|
|
result = "已导入";
|
|
break;
|
|
case 0:
|
|
result = "已创建入库订单";
|
|
break;
|
|
case 1:
|
|
result = "入库审核中" + ",当前节点-" + BLL.Person_PersonsService.getPersonsNamesPersonIds(string.Join(",", approveModel.Select(x => x.ApproveMan)));
|
|
break;
|
|
case 2:
|
|
result = "入库审核拒绝";
|
|
break;
|
|
case 3:
|
|
result = "入库审核成功";
|
|
break;
|
|
case 4:
|
|
result = "出库审核中" + ",当前节点-" + BLL.Person_PersonsService.getPersonsNamesPersonIds(string.Join(",", approveModel.Select(x => x.ApproveMan)));
|
|
break;
|
|
case 5:
|
|
result = "出库审核拒绝";
|
|
break;
|
|
case 6:
|
|
result = "出库审核成功";
|
|
break;
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
|
|
#region 获取列表
|
|
/// <summary>
|
|
/// 记录数
|
|
/// </summary>
|
|
public static int Count
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
public static IEnumerable<Model.PHTGL_Invoice> GetPHTGL_InvoiceByModle(Model.PHTGL_Invoice table)
|
|
{
|
|
var q = from x in Funs.DB.PHTGL_Invoice
|
|
where
|
|
(string.IsNullOrEmpty(table.InvoiceId) || x.InvoiceId.Contains(table.InvoiceId)) &&
|
|
(string.IsNullOrEmpty(table.ProjectId) || x.ProjectId.Contains(table.ProjectId)) &&
|
|
(string.IsNullOrEmpty(table.ContractId) || x.ContractId.Contains(table.ContractId)) &&
|
|
(string.IsNullOrEmpty(table.InvoiceCode) || x.InvoiceCode.Contains(table.InvoiceCode)) &&
|
|
(string.IsNullOrEmpty(table.InvoiceNumber) || x.InvoiceNumber.Contains(table.InvoiceNumber)) &&
|
|
(string.IsNullOrEmpty(table.SellerName) || x.SellerName.Contains(table.SellerName)) &&
|
|
(string.IsNullOrEmpty(table.InvoiceDate) || x.InvoiceDate.Contains(table.InvoiceDate)) &&
|
|
(string.IsNullOrEmpty(table.Remark) || x.Remark.Contains(table.Remark)) &&
|
|
(string.IsNullOrEmpty(table.ImagePath) || x.ImagePath.Contains(table.ImagePath)) &&
|
|
(string.IsNullOrEmpty(table.SellerTaxNumber) || x.SellerTaxNumber.Contains(table.SellerTaxNumber)) &&
|
|
(string.IsNullOrEmpty(table.ApproveManJson) || x.ApproveManJson.Contains(table.ApproveManJson)) &&
|
|
(string.IsNullOrEmpty(table.CreateUser) || x.CreateUser.Contains(table.CreateUser)) &&
|
|
(table.State == null || x.State == table.State)
|
|
select x
|
|
;
|
|
|
|
return q.ToList();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取分页列表
|
|
/// </summary>
|
|
/// <param name="table"></param>
|
|
/// <param name="grid1"></param>
|
|
/// <returns></returns>
|
|
public static IEnumerable GetListData(Model.PHTGL_Invoice table, Grid grid1)
|
|
{
|
|
var q = GetPHTGL_InvoiceByModle(table);
|
|
Count = q.Count();
|
|
if (Count == 0)
|
|
{
|
|
return null;
|
|
}
|
|
q = q.Skip(grid1.PageSize * grid1.PageIndex).Take(grid1.PageSize).ToList();
|
|
// q = SortConditionHelper.SortingAndPaging(q, Grid1.SortField, Grid1.SortDirection, Grid1.PageIndex, Grid1.PageSize);
|
|
return (from x in q
|
|
join y in Funs.DB.PHTGL_Contract on x.ContractId equals y.ContractId into g
|
|
from c in g.DefaultIfEmpty()
|
|
select new
|
|
{
|
|
c?.ContractName,
|
|
c?.ContractNum,
|
|
c?.Parties,
|
|
c?.ContractAmount,
|
|
x.InvoiceId,
|
|
x.ProjectId,
|
|
x.ContractId,
|
|
x.State,
|
|
x.InvoiceCode,
|
|
x.InvoiceNumber,
|
|
x.SellerName,
|
|
x.InvoiceDate,
|
|
x.AmountExcludingTax,
|
|
x.TotalTax,
|
|
x.Remark,
|
|
x.ImagePath,
|
|
x.SellerTaxNumber,
|
|
x.InvoiceAmount,
|
|
x.ApproveManJson,
|
|
x.CreateDate,
|
|
x.CreateUser,
|
|
x.OrderInDate,
|
|
x.OrderOutDate,
|
|
x.OrderCode,
|
|
x.MaterialRequisitionUnit
|
|
});
|
|
}
|
|
|
|
|
|
public static IEnumerable GetOrderInListData(Model.PHTGL_Invoice table, Grid grid1, string state)
|
|
{
|
|
var q = GetPHTGL_InvoiceByModle(table);
|
|
|
|
switch (state)
|
|
{
|
|
case "0":
|
|
q = q.Where(x => x.State > StateDataIn); //全部
|
|
break;
|
|
case "1":
|
|
q = q.Where(x => x.State > StateDataIn && x.State < StateInPutApproveSuccess); //未入库
|
|
break;
|
|
case "2":
|
|
q = q.Where(x => x.State >= StateInPutApproveSuccess); //已入库
|
|
break;
|
|
case "3":
|
|
q = q.Where(x => x.State >= StateInPutApproveSuccess && x.State < StateOutPutApproveSuccess);//未出库
|
|
break;
|
|
case "4":
|
|
q = q.Where(x => x.State == StateOutPutApproveSuccess);//已出库
|
|
break;
|
|
|
|
}
|
|
Count = q.Count();
|
|
if (Count == 0)
|
|
{
|
|
return null;
|
|
}
|
|
q = q.Skip(grid1.PageSize * grid1.PageIndex).Take(grid1.PageSize).ToList();
|
|
// q = SortConditionHelper.SortingAndPaging(q, Grid1.SortField, Grid1.SortDirection, Grid1.PageIndex, Grid1.PageSize);
|
|
return (from x in q
|
|
join y in Funs.DB.PHTGL_Contract on x.ContractId equals y.ContractId into g
|
|
from c in g.DefaultIfEmpty()
|
|
where x.State > StateDataIn
|
|
select new
|
|
{
|
|
c?.ContractName,
|
|
c?.ContractNum,
|
|
c?.Parties,
|
|
c?.ContractAmount,
|
|
x.InvoiceId,
|
|
x.ProjectId,
|
|
x.ContractId,
|
|
x.State,
|
|
x.InvoiceCode,
|
|
x.InvoiceNumber,
|
|
x.SellerName,
|
|
x.InvoiceDate,
|
|
x.AmountExcludingTax,
|
|
x.TotalTax,
|
|
x.Remark,
|
|
x.ImagePath,
|
|
x.SellerTaxNumber,
|
|
x.InvoiceAmount,
|
|
x.ApproveManJson,
|
|
x.CreateDate,
|
|
x.CreateUser,
|
|
x.OrderInDate,
|
|
x.OrderOutDate,
|
|
x.OrderCode,
|
|
x.MaterialRequisitionUnit
|
|
}).ToList();
|
|
}
|
|
#endregion
|
|
|
|
public static Model.PHTGL_Invoice GetPHTGL_InvoiceById(string InvoiceId)
|
|
{
|
|
return Funs.DB.PHTGL_Invoice.FirstOrDefault(x => x.InvoiceId == InvoiceId);
|
|
}
|
|
|
|
public static PHTGL_InvoicePrintModel GetPHTGL_InvoicePrintModel(string InvoiceId)
|
|
{
|
|
var result = new PHTGL_InvoicePrintModel();
|
|
Order order = new Order();
|
|
List<OrderDetail> orderDetails = new List<OrderDetail>();
|
|
OrderApproveIn orderApproveIn = new OrderApproveIn();
|
|
OrderApproveOut orderApproveOut = new OrderApproveOut();
|
|
|
|
var invoiceModel = GetPHTGL_InvoiceById(InvoiceId);
|
|
var invoiceDetail = PhtglInvoicedetailService.GetPHTGL_InvoiceDetailByInvoiceId(InvoiceId);
|
|
var approveManModels = GetInvoiceApproveManEntity(InvoiceId);
|
|
//将invoiceModel 映射到order
|
|
var mapper = EmitMapper.ObjectMapperManager.DefaultInstance.GetMapper<PHTGL_Invoice, Order>();
|
|
order = mapper.Map(invoiceModel);
|
|
order.ProjectName = ProjectService.GetProjectNameByProjectId(invoiceModel.ProjectId);
|
|
order.ContractCode = ContractService.GetContractById(invoiceModel.ContractId)?.ContractNum;
|
|
//invoiceDetail 映射到orderDetails
|
|
var mapper2 = EmitMapper.ObjectMapperManager.DefaultInstance.GetMapper<List<PHTGL_InvoiceDetail>, List<OrderDetail>>();
|
|
orderDetails = mapper2.Map(invoiceDetail);
|
|
orderDetails = orderDetails.Select(x => new OrderDetail
|
|
{
|
|
GoodsOrServicesName = x.GoodsOrServicesName,
|
|
SpecificationModel = x.SpecificationModel,
|
|
Unit = x.Unit,
|
|
Quantity = x.Quantity,
|
|
UnitPrice = x.UnitPrice,
|
|
NoTaxPrice = x.Amount - x.Tax,
|
|
TaxRate = string.Format("{0:P0}", Convert.ToDecimal(x.TaxRate)),
|
|
Tax = x.Tax,
|
|
Amount = x.Amount,
|
|
}).ToList();
|
|
if (approveManModels != null)
|
|
{
|
|
orderApproveIn.ProjectManager = !string.IsNullOrEmpty(approveManModels.InputApproveMan.ProjectManager) ? BLL.Person_PersonsService.getSignatureUrl(approveManModels.InputApproveMan.ProjectManager) : "";
|
|
orderApproveIn.ControlManager = !string.IsNullOrEmpty(approveManModels.InputApproveMan.ControlManager) ? BLL.Person_PersonsService.getSignatureUrl(approveManModels.InputApproveMan.ControlManager) : "";
|
|
orderApproveIn.ConstructionManager = !string.IsNullOrEmpty(approveManModels.InputApproveMan.ConstructionManager) ? BLL.Person_PersonsService.getSignatureUrl(approveManModels.InputApproveMan.ConstructionManager) : "";
|
|
orderApproveIn.ProfessionalEngineer = !string.IsNullOrEmpty(approveManModels.InputApproveMan.ProfessionalEngineer) ? BLL.Person_PersonsService.getSignatureUrl(approveManModels.InputApproveMan.ProfessionalEngineer) : "";
|
|
|
|
orderApproveOut.ProjectManager = !string.IsNullOrEmpty(approveManModels.OutputApproveMan.ProjectManager) ? BLL.Person_PersonsService.getSignatureUrl(approveManModels.OutputApproveMan.ProjectManager) : "";
|
|
orderApproveOut.ControlManager = !string.IsNullOrEmpty(approveManModels.OutputApproveMan.ControlManager) ? BLL.Person_PersonsService.getSignatureUrl(approveManModels.OutputApproveMan.ControlManager) : "";
|
|
orderApproveOut.PurchasingMan = !string.IsNullOrEmpty(approveManModels.OutputApproveMan.PurchasingMan) ? BLL.Person_PersonsService.getSignatureUrl(approveManModels.OutputApproveMan.PurchasingMan) : "";
|
|
orderApproveOut.ConUnitMaterialOfficer = !string.IsNullOrEmpty(approveManModels.OutputApproveMan.ConUnitMaterialOfficer) ? BLL.Person_PersonsService.getSignatureUrl(approveManModels.OutputApproveMan.ConUnitMaterialOfficer) : "";
|
|
orderApproveOut.ConUnitProjectManager = !string.IsNullOrEmpty(approveManModels.OutputApproveMan.ConUnitProjectManager) ? BLL.Person_PersonsService.getSignatureUrl(approveManModels.OutputApproveMan.ConUnitProjectManager) : "";
|
|
|
|
}
|
|
|
|
|
|
result.Order = order;
|
|
result.Data = orderDetails;
|
|
result.ApproveIn = orderApproveIn;
|
|
result.ApproveOut = orderApproveOut;
|
|
return result;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 添加实体
|
|
/// </summary>
|
|
/// <param name="newtable"></param>
|
|
public static void AddPHTGL_Invoice(Model.PHTGL_Invoice newtable)
|
|
{
|
|
|
|
Model.PHTGL_Invoice table = new Model.PHTGL_Invoice
|
|
{
|
|
InvoiceId = newtable.InvoiceId,
|
|
ProjectId = newtable.ProjectId,
|
|
ContractId = newtable.ContractId,
|
|
State = newtable.State,
|
|
InvoiceCode = newtable.InvoiceCode,
|
|
InvoiceNumber = newtable.InvoiceNumber,
|
|
SellerName = newtable.SellerName,
|
|
InvoiceDate = newtable.InvoiceDate,
|
|
AmountExcludingTax = newtable.AmountExcludingTax,
|
|
TotalTax = newtable.TotalTax,
|
|
Remark = newtable.Remark,
|
|
ImagePath = newtable.ImagePath,
|
|
SellerTaxNumber = newtable.SellerTaxNumber,
|
|
InvoiceAmount = newtable.InvoiceAmount,
|
|
ApproveManJson = newtable.ApproveManJson,
|
|
CreateDate = newtable.CreateDate,
|
|
CreateUser = newtable.CreateUser,
|
|
OrderInDate = newtable.OrderInDate,
|
|
OrderCode = newtable.OrderCode,
|
|
OrderOutDate = newtable.OrderOutDate,
|
|
MaterialRequisitionUnit = newtable.MaterialRequisitionUnit,
|
|
};
|
|
Funs.DB.PHTGL_Invoice.InsertOnSubmit(table);
|
|
Funs.DB.SubmitChanges();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 修改实体
|
|
/// </summary>
|
|
/// <param name="newtable"></param>
|
|
public static void UpdatePHTGL_Invoice(Model.PHTGL_Invoice newtable)
|
|
{
|
|
|
|
Model.PHTGL_Invoice table = Funs.DB.PHTGL_Invoice.FirstOrDefault(x => x.InvoiceId == newtable.InvoiceId);
|
|
if (table != null)
|
|
{
|
|
table.InvoiceId = newtable.InvoiceId;
|
|
table.ProjectId = newtable.ProjectId;
|
|
table.ContractId = newtable.ContractId;
|
|
table.State = newtable.State;
|
|
table.InvoiceCode = newtable.InvoiceCode;
|
|
table.InvoiceNumber = newtable.InvoiceNumber;
|
|
table.SellerName = newtable.SellerName;
|
|
table.InvoiceDate = newtable.InvoiceDate;
|
|
table.AmountExcludingTax = newtable.AmountExcludingTax;
|
|
table.TotalTax = newtable.TotalTax;
|
|
table.Remark = newtable.Remark;
|
|
table.ImagePath = newtable.ImagePath;
|
|
table.SellerTaxNumber = newtable.SellerTaxNumber;
|
|
table.InvoiceAmount = newtable.InvoiceAmount;
|
|
table.ApproveManJson = newtable.ApproveManJson;
|
|
table.CreateDate = newtable.CreateDate;
|
|
table.CreateUser = newtable.CreateUser;
|
|
table.OrderInDate = newtable.OrderInDate;
|
|
table.OrderCode = newtable.OrderCode;
|
|
table.OrderOutDate = newtable.OrderOutDate;
|
|
table.MaterialRequisitionUnit = newtable.MaterialRequisitionUnit;
|
|
Funs.DB.SubmitChanges();
|
|
}
|
|
|
|
}
|
|
/// <summary>
|
|
/// 删除实体
|
|
/// </summary>
|
|
/// <param name="InvoiceId"></param>
|
|
public static void DeletePHTGL_InvoiceById(string InvoiceId)
|
|
{
|
|
|
|
Model.PHTGL_Invoice table = Funs.DB.PHTGL_Invoice.FirstOrDefault(x => x.InvoiceId == InvoiceId);
|
|
if (table != null)
|
|
{
|
|
Funs.DB.PHTGL_Invoice.DeleteOnSubmit(table);
|
|
Funs.DB.SubmitChanges();
|
|
}
|
|
|
|
}
|
|
/// <summary>
|
|
/// 根据主键获取审批人实体
|
|
/// </summary>
|
|
/// <param name="InvoiceId"></param>
|
|
/// <returns></returns>
|
|
public static Model.PHTGL_InvoiceApproveManEntity GetInvoiceApproveManEntity(string InvoiceId)
|
|
{
|
|
Model.PHTGL_InvoiceApproveManEntity list = new Model.PHTGL_InvoiceApproveManEntity();
|
|
Model.PHTGL_Invoice data = Funs.DB.PHTGL_Invoice.FirstOrDefault(e => e.InvoiceId == InvoiceId);
|
|
if (data != null && !string.IsNullOrEmpty(data.ApproveManJson))
|
|
{
|
|
list = Newtonsoft.Json.JsonConvert.DeserializeObject<Model.PHTGL_InvoiceApproveManEntity>(data.ApproveManJson);
|
|
}
|
|
return list;
|
|
}
|
|
/// <summary>
|
|
/// 将状态改为已创建
|
|
/// </summary>
|
|
/// <param name="invoiceId"></param>
|
|
public static void ChangeStateToCreate(string invoiceId)
|
|
{
|
|
var model = GetPHTGL_InvoiceById(invoiceId);
|
|
model.State = StateCreate;
|
|
UpdatePHTGL_Invoice(model);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 保存入库审批人实体
|
|
/// </summary>
|
|
/// <param name="invoiceId"></param>
|
|
/// <param name="inputapproveman"></param>
|
|
public static void SaveInputApproveManEntity(string invoiceId, Inputapproveman inputapproveman)
|
|
{
|
|
var table = GetInvoiceApproveManEntity(invoiceId);
|
|
table.InputApproveMan = inputapproveman;
|
|
var json = Newtonsoft.Json.JsonConvert.SerializeObject(table);
|
|
var data = Funs.DB.PHTGL_Invoice.FirstOrDefault(e => e.InvoiceId == invoiceId);
|
|
if (data != null)
|
|
{
|
|
data.ApproveManJson = json;
|
|
Funs.DB.SubmitChanges();
|
|
}
|
|
|
|
}
|
|
/// <summary>
|
|
/// 保存出库审批人实体
|
|
/// </summary>
|
|
/// <param name="invoiceId"></param>
|
|
/// <param name="outputapproveman"></param>
|
|
public static void SaveOutputApproveManEntity(string invoiceId, Outputapproveman outputapproveman)
|
|
{
|
|
var table = GetInvoiceApproveManEntity(invoiceId);
|
|
table.OutputApproveMan = outputapproveman;
|
|
var json = Newtonsoft.Json.JsonConvert.SerializeObject(table);
|
|
var data = Funs.DB.PHTGL_Invoice.FirstOrDefault(e => e.InvoiceId == invoiceId);
|
|
if (data != null)
|
|
{
|
|
data.ApproveManJson = json;
|
|
Funs.DB.SubmitChanges();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 导入数据
|
|
/// </summary>
|
|
/// <param name="path">文件地址</param>
|
|
/// <param name="projectid">项目id</param>
|
|
/// <param name="creatUserId">创建人id</param>
|
|
/// <returns></returns>
|
|
public static ResponeData ImportData(string path, string projectid, string creatUserId)
|
|
{
|
|
var responeData = new ResponeData();
|
|
List<PHTGL_InvoiceDtoIn> temeplateDtoIns;
|
|
try
|
|
{
|
|
temeplateDtoIns = MiniExcel.Query<PHTGL_InvoiceDtoIn>(path, startCell: "A2").ToList();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
responeData.code = 0;
|
|
responeData.message = "模板错误:" + ex.ToString();
|
|
return responeData;
|
|
}
|
|
//数据校验
|
|
if (temeplateDtoIns.Count == 0)
|
|
{
|
|
responeData.code = 0;
|
|
responeData.message = "导入数据为空!";
|
|
return responeData;
|
|
}
|
|
|
|
var invoiceCodeList = temeplateDtoIns.Select(x => x.InvoiceCode).Distinct().ToList(); //获取所有发票代码
|
|
//根据发票代码分组插入数据
|
|
foreach (var invoiceCode in invoiceCodeList)
|
|
{
|
|
var invoiceCodeDtoIns = temeplateDtoIns.Where(x => x.InvoiceCode == invoiceCode).ToList();
|
|
|
|
var mapper =
|
|
ObjectMapperManager.DefaultInstance.GetMapper<List<PHTGL_InvoiceDtoIn>, List<PHTGL_Invoice>>();
|
|
var mapperDetail =
|
|
ObjectMapperManager.DefaultInstance.GetMapper<List<PHTGL_InvoiceDtoIn>, List<PHTGL_InvoiceDetail>>();
|
|
//通过映射实体赋值
|
|
var invoiceModel = mapper.Map(invoiceCodeDtoIns).FirstOrDefault();
|
|
var invoceDetailList = mapperDetail.Map(invoiceCodeDtoIns.Where(x => !string.IsNullOrEmpty(x.GoodsOrServicesName) && !string.IsNullOrEmpty(x.SpecificationModel)).ToList());
|
|
|
|
var queryModel = new PHTGL_Invoice
|
|
{
|
|
InvoiceCode = invoiceCode,
|
|
ProjectId = projectid
|
|
};
|
|
var queryresult = GetPHTGL_InvoiceByModle(queryModel).FirstOrDefault();//查询该发票代码是否存在
|
|
if (queryresult != null)
|
|
{
|
|
if (queryresult.State != StateDataIn)
|
|
{
|
|
continue;
|
|
}
|
|
invoiceModel.State = StateDataIn;
|
|
invoiceModel.ProjectId = projectid;
|
|
invoiceModel.InvoiceId = queryresult.InvoiceId;
|
|
invoiceModel.CreateUser = creatUserId;
|
|
invoiceModel.CreateDate = DateTime.Now;
|
|
UpdatePHTGL_Invoice(invoiceModel);
|
|
}
|
|
else
|
|
{
|
|
invoiceModel.InvoiceId = SQLHelper.GetNewID();
|
|
invoiceModel.State = StateDataIn;
|
|
invoiceModel.ProjectId = projectid;
|
|
invoiceModel.CreateUser = creatUserId;
|
|
invoiceModel.CreateDate = DateTime.Now;
|
|
AddPHTGL_Invoice(invoiceModel);
|
|
|
|
}
|
|
PhtglInvoicedetailService.DeletePHTGL_InvoiceDetailByInvoiceId(invoiceModel.InvoiceId);
|
|
PhtglInvoicedetailService.BatchAddPHTGL_InvoiveDetail(invoceDetailList, invoiceModel.InvoiceId); //插入发票明细
|
|
|
|
}
|
|
return responeData;
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取审批人员
|
|
/// </summary>
|
|
/// <param name="invoiceId">主键id</param>
|
|
/// <param name="type">0 入库 1出库</param>
|
|
/// <returns></returns>
|
|
public static List<ApproveManModel> GetApproveManModels(string invoiceId, int type)
|
|
{
|
|
List<ApproveManModel> approveManModels = new List<ApproveManModel>();
|
|
var table = GetInvoiceApproveManEntity(invoiceId);
|
|
|
|
if (type == 0) //入库
|
|
{
|
|
approveManModels.Add(new ApproveManModel { Number = 1, userid = table.InputApproveMan.ProfessionalEngineer, Rolename = "专业工程师" });
|
|
approveManModels.Add(new ApproveManModel { Number = 2, userid = table.InputApproveMan.ConstructionManager, Rolename = "施工经理" });
|
|
approveManModels.Add(new ApproveManModel { Number = 3, userid = table.InputApproveMan.ControlManager, Rolename = "控制经理" });
|
|
approveManModels.Add(new ApproveManModel { Number = 4, userid = table.InputApproveMan.ProjectManager, Rolename = "项目经理" });
|
|
}
|
|
else
|
|
{
|
|
approveManModels.Add(new ApproveManModel { Number = 5, userid = table.OutputApproveMan.PurchasingMan, Rolename = "采购员" });
|
|
approveManModels.Add(new ApproveManModel { Number = 6, userid = table.OutputApproveMan.ControlManager, Rolename = "控制经理" });
|
|
approveManModels.Add(new ApproveManModel { Number = 7, userid = table.OutputApproveMan.ProjectManager, Rolename = "项目经理" });
|
|
approveManModels.Add(new ApproveManModel { Number = 8, userid = table.OutputApproveMan.ConUnitMaterialOfficer, Rolename = "施工单位材料经理" });
|
|
approveManModels.Add(new ApproveManModel { Number = 9, userid = table.OutputApproveMan.ConUnitProjectManager, Rolename = "施工单位项目经理" });
|
|
}
|
|
|
|
|
|
return approveManModels;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 开启审批流程
|
|
/// </summary>
|
|
/// <param name="invoiceId"></param>
|
|
public static void StartApprovalProcess(string invoiceId)
|
|
{
|
|
|
|
var model = GetPHTGL_InvoiceById(invoiceId);
|
|
if (model.State == StateCreate || model.State == StateInPutApproveRefuse)
|
|
{
|
|
CreateFirstApprove(invoiceId, 0);
|
|
model.State = StateInPutApprove;
|
|
UpdatePHTGL_Invoice(model);
|
|
}
|
|
else if (model.State == StateInPutApproveSuccess || model.State == StateOutPutApproveRefuse)
|
|
{
|
|
CreateFirstApprove(invoiceId, 1);
|
|
model.State = StateOutPutApprove;
|
|
UpdatePHTGL_Invoice(model);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 创建第一个审批流程
|
|
/// </summary>
|
|
/// <param name="invoiceId">主键</param>
|
|
/// <param name="type">0 入库 1出库</param>
|
|
public static void CreateFirstApprove(string invoiceId, int type)
|
|
{
|
|
var approveManModels = GetApproveManModels(invoiceId, type).OrderBy(x => x.Number).FirstOrDefault();
|
|
Model.PHTGL_Approve _Approve = new Model.PHTGL_Approve();
|
|
_Approve.ApproveId = SQLHelper.GetNewID(typeof(Model.PHTGL_Approve));
|
|
_Approve.ContractId = invoiceId;
|
|
_Approve.ApproveMan = approveManModels.userid;
|
|
_Approve.ApproveDate = "";
|
|
_Approve.State = 0;
|
|
_Approve.IsAgree = 0;
|
|
_Approve.ApproveIdea = "";
|
|
_Approve.IsPushOa = 0;
|
|
_Approve.ApproveType = approveManModels.Rolename;
|
|
_Approve.ApproveForm = (type == 0 ? "Invoice_Input" : "Invoice_Output");
|
|
BLL.PHTGL_ApproveService.AddPHTGL_Approve(_Approve);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 审批
|
|
/// </summary>
|
|
/// <param name="invoiceId"></param>
|
|
/// <param name="userid"></param>
|
|
/// <param name="isAgree"></param>
|
|
/// <param name="idea"></param>
|
|
/// <param name="type">0 入库 1出库</param>
|
|
public static void Approve(string invoiceId, int type, string userid, bool isAgree, string idea)
|
|
{
|
|
var approveManModels = GetApproveManModels(invoiceId, type); //获取审批人员
|
|
var thisApprovemodel = PHTGL_ApproveService.GetPHTGL_ApproveByUserId(invoiceId, userid);//获取当前人员正在审批的信息
|
|
if (thisApprovemodel == null) { return; }
|
|
var thisApproveTypeNumber = approveManModels.Find(x => x.userid == userid && x.Rolename == thisApprovemodel.ApproveType).Number; //当前审批人员序号
|
|
int nextApproveTypeNumber = thisApproveTypeNumber + 1; //下一个审批人员序号
|
|
int maxApproveTypeNumber = approveManModels.Max(x => x.Number); //最大审批人员序号
|
|
|
|
|
|
thisApprovemodel.ApproveDate = Funs.GetNewDateTimeOrNow("").ToString();
|
|
thisApprovemodel.IsAgree = isAgree ? 2 : 1;
|
|
thisApprovemodel.ApproveIdea = idea;
|
|
thisApprovemodel.State = 1;
|
|
PHTGL_ApproveService.UpdatePHTGL_Approve(thisApprovemodel);
|
|
if (isAgree)
|
|
{
|
|
if (PHTGL_ApproveService.GetPHTGL_ApproveByContractId(invoiceId).Count == 0) //当前节点是否全部审批结束
|
|
{
|
|
if (thisApproveTypeNumber < maxApproveTypeNumber) //是否最末节点
|
|
{
|
|
Model.PHTGL_Approve _Approve = new Model.PHTGL_Approve();
|
|
_Approve.ContractId = thisApprovemodel.ContractId;
|
|
_Approve.ApproveMan = approveManModels.Find(e => e.Number == nextApproveTypeNumber).userid;
|
|
_Approve.ApproveDate = "";
|
|
_Approve.State = 0;
|
|
_Approve.IsAgree = 0;
|
|
_Approve.ApproveIdea = "";
|
|
_Approve.ApproveType = approveManModels.Find(e => e.Number == nextApproveTypeNumber).Rolename;
|
|
_Approve.IsPushOa = 0;
|
|
_Approve.ApproveForm = (type == 0 ? "Invoice_Input" : "Invoice_Output");
|
|
_Approve.ApproveId = SQLHelper.GetNewID(typeof(Model.PHTGL_Approve));
|
|
BLL.PHTGL_ApproveService.AddPHTGL_Approve(_Approve);
|
|
}
|
|
else
|
|
{
|
|
//流程走完结束
|
|
var model = GetPHTGL_InvoiceById(invoiceId);
|
|
model.State = (type == 0 ? StateInPutApproveSuccess : StateOutPutApproveSuccess);
|
|
UpdatePHTGL_Invoice(model);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{ //审批拒绝-流程结束
|
|
var model = GetPHTGL_InvoiceById(invoiceId);
|
|
model.State = (type == 0 ? StateInPutApproveRefuse : StateOutPutApproveRefuse);
|
|
UpdatePHTGL_Invoice(model);
|
|
}
|
|
OAWebSevice.Pushoa();
|
|
OAWebSevice.DoneRequest(thisApprovemodel.ApproveId);
|
|
}
|
|
|
|
}
|
|
|
|
} |