using System.Data;
|
using System.Data.SqlClient;
|
using System.Dynamic;
|
using System.Text;
|
using Gs.Entity.BaseInfo;
|
using Gs.Entity.Dto;
|
using Gs.Entity.QC;
|
using Gs.Entity.Sys;
|
using Gs.Entity.Warehouse;
|
using Gs.Entity.Wom;
|
using Gs.Toolbox;
|
using Gs.Toolbox.ApiCore.Abstract.Mvc;
|
using Gs.Toolbox.ApiCore.Common.Mvc;
|
using Gs.Toolbox.ApiCore.Entity;
|
using Gs.Toolbox.ApiCore.Group;
|
using Gs.Warehouse.Models;
|
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Mvc;
|
using Newtonsoft.Json;
|
using Newtonsoft.Json.Linq;
|
using SqlSugar;
|
using SqlDataAdapter = System.Data.SqlClient.SqlDataAdapter;
|
|
namespace Gs.Warehouse.Services;
|
|
[ApiGroup(ApiGroupNames.PerMission)]
|
public class MesInvItemOutsManager : Repository<MesInvItemOuts>, IRomteService
|
{
|
//
|
private readonly IHttpContextAccessor _http;
|
private readonly MesInvItemOutCDetailsManager _mesInvItemOutCDetailsManager;
|
|
private readonly MesInvItemOutItemsManager _mesInvItemOutsManager;
|
|
private readonly string _userCode, _userGuid, _orgFids;
|
|
public MesInvItemOutsManager(IHttpContextAccessor httpContextAccessor)
|
{
|
_http = httpContextAccessor;
|
(_userCode, _userGuid, _orgFids) =
|
UtilityHelper.GetUserGuidAndOrgGuid(_http);
|
|
_mesInvItemOutsManager = new MesInvItemOutItemsManager();
|
_mesInvItemOutCDetailsManager = new MesInvItemOutCDetailsManager();
|
}
|
|
|
//[RequestMethod(RequestMethods.POST)]
|
//public ReturnDto<int> MESToERP([FromBody] MesInvItemOutItems model)
|
//{
|
// var _msgObj = MesToErpParam(model.Guid, model.ItemOutId, "", ErpOperationType.PurchaseReturnAudit);
|
// var responses = InterfaceUtil.ResendERP(_msgObj);
|
// if (responses.StartsWith("返回报错"))
|
// {
|
// LogHelper.Debug(ToString(), "erp:" + responses);
|
// return ReturnDto<int>.QuickReturn(0,
|
// ReturnCode.Default, responses);
|
// }
|
|
// return ReturnDto<int>.QuickReturn(1, ReturnCode.Success, "操作成功!");
|
//}
|
|
//private string GetErpParametersMx(Guid guid)
|
//{
|
// var materials = Db
|
// .Queryable<MesInvItemOuts, MesInvItemOutItems,
|
// MesItems, MesUnit, MesInvItemArnDetail, MesDepots>(
|
// (a, b, c, d, e, f) => new JoinQueryInfos(
|
// JoinType.Left, a.Guid == b.ItemOutId,
|
// JoinType.Left, b.ItemId == c.Id,
|
// JoinType.Left, d.Id.ToString() == c.ItemUnit,
|
// JoinType.Left,
|
// e.CbillNo == b.WorkNo && e.ItemId == b.ItemId,
|
// JoinType.Left, f.DepotId == a.DepotId
|
// )).Where((a, b, c, d, e, f) => b.Guid == guid)
|
// .Select<Material>((a, b, c, d, e, f) => new Material
|
// {
|
// FMaterialId = c.ItemNo,
|
// FRMREALQTY = b.Quantity.ToString(),
|
// FStockId = f.DepotCode,
|
// FUnitID = d.Fnumber,
|
// FLot = b.WorkNo,
|
// F_MES_ENTRYID = b.Guid,
|
// FsrcEntryId = e.Guid.ToString()
|
// }).ToList();
|
|
|
// var mm = Db.Queryable<MesInvItemOuts>()
|
// .Where(a => a.Guid == guid).First();
|
|
// var jsonEntries = materials.Select(d => new
|
// {
|
// d.FMaterialId,
|
// d.FRMREALQTY,
|
// d.FStockId,
|
// d.FUnitID,
|
// d.FLot,
|
// F_MES_ENTRYID = d.F_MES_ENTRYID.ToString(),
|
// d.FsrcEntryId
|
// }).ToList();
|
// var fdate = DateTime.Now.ToString("yyyy-MM-dd");
|
// var jsonString = JsonConvert.SerializeObject(jsonEntries);
|
// var encodedUrl = "taskname=CGTL&mesid=" + guid +
|
// "&optype=create&datajson={\"F_MES_ID\":\"" + guid
|
// + "\",\"FDate\":\"" + fdate
|
// + "\",\"FSRCBillTypeId\":\"" + "采购入库单"
|
// + "\",\"FDESCRIPTION\":\"" + mm.Remark
|
// + "\",\"FMRMODE\":\"" + mm.Fmrmode
|
// + "\",\"cgtlentry\":" + jsonString
|
// + "}";
|
// return encodedUrl;
|
//}
|
|
//public MessageCenter MesToErpParam(Guid formId, Guid? guid,
|
// string ErpUrl, ErpOperationType operationType)
|
//{
|
// var mm = Db.Queryable<MesInvItemOuts>()
|
// .Where(a => a.Guid == guid).First();
|
|
// var tableName = "";
|
// var title = "";
|
// var pageName = "";
|
|
// var _strErpParameters ="";
|
|
// switch (operationType)
|
// {
|
// case ErpOperationType.PurchaseReturnListReview:
|
// tableName = "INV_ITEM_OUTS_A";
|
// title = "生产领料单 " + mm.ItemOutNo + " 审核";
|
// pageName = "Warehouse/ProductionPick/ProductionPick?id=" +
|
// mm.Guid +
|
// "&itemOutNo=" + mm.ItemOutNo;
|
// _strErpParameters = SCLLAuditErpParamet(formId);
|
// break;
|
// case ErpOperationType.ProductionPickReverseAudit:
|
// tableName = "INV_ITEM_OUTS_A";
|
// title = "生产领料单 " + mm.ItemOutNo + " 反审核";
|
// pageName = "Warehouse/ProductionPick/ProductionPick?id=" +
|
// mm.Guid +
|
// "&itemOutNo=" + mm.ItemOutNo;
|
// _strErpParameters = SCLLReverseAuditErpParamet(formId);
|
// break;
|
|
// case ErpOperationType.PurchaseReturnAudit:
|
// tableName = "MesInvItemOuts";
|
// title = "采购退料单 " + mm.ItemOutNo;
|
// pageName = "Warehouse/PurchaseReturn/Add?id=" + mm.Guid +
|
// "&itemOutNo=" + mm.ItemOutNo;
|
// _strErpParameters = GetErpParametersMx(formId);
|
// break;
|
|
// default:
|
|
// throw new ArgumentOutOfRangeException(nameof(operationType),
|
// "Invalid ERP operation type");
|
// }
|
|
// var message = new MessageCenter
|
// {
|
// TableName = tableName,
|
// Url = ErpUrl,
|
// Status = 1,
|
// CreateBy = _userCode,
|
// Route = guid.ToString(),
|
// Title = title,
|
// PageName = pageName,
|
// CreateDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
|
// Method = "POST",
|
// Seq = 1,
|
// Data = _strErpParameters,
|
// IsMessage = 0,
|
// ContentType = "application/x-www-form-urlencoded"
|
// };
|
// return message;
|
//}
|
|
|
#region 生产领料单
|
|
///// <summary>
|
///// 生产领料单审核
|
///// </summary>
|
///// <param name="model"></param>
|
///// <returns></returns>
|
//[RequestMethod(RequestMethods.POST)]
|
//public ReturnDto<int> SCLLAuditSendErp([FromBody] MesInvItemOuts model)
|
//{
|
// var mesInvItemOuts = Db.Queryable<MesInvItemOuts>()
|
// .Where(a => a.ItemOutNo == model.ItemOutNo).First();
|
|
// if (mesInvItemOuts == null) throw new Exception("领料单号不存在");
|
|
|
// var womcaa = Db.Queryable<Womcaa>()
|
// .Where(s => s.Caa022.ToString() == mesInvItemOuts.WorkNo).First();
|
|
// if (womcaa == null) throw new Exception("任务单号不存在");
|
|
// var womdaa = Db.Queryable<Womdaa>()
|
// .Where(s => s.Daa001 == mesInvItemOuts.PbillNo).First();
|
|
// if (womdaa == null) throw new Exception("工单号不存在");
|
|
// var C_DEPARTMENTCODE = Db.Queryable<SysDepartment, MesInvItemOuts>(
|
// (a, b) => new object[]
|
// {
|
// JoinType.Left, a.Departmentid.ToString() == b.OutPart
|
// }).Where((a, b) => b.OutPart == mesInvItemOuts.OutPart)
|
// .Select((a, b) => a.Departmentcode).First();
|
|
// if (C_DEPARTMENTCODE == null) throw new Exception("部门信息不存在");
|
|
// if (mesInvItemOuts.Status == 1) throw new Exception("领料单已审核,不能重复推送");
|
|
// var _msgObj = MesToErpParam(mesInvItemOuts.Guid, null, "", ErpOperationType.PurchaseReturnListReview);
|
// var responses = InterfaceUtil.ResendERP(_msgObj);
|
// if (responses.StartsWith("返回报错"))
|
// {
|
// LogHelper.Debug(ToString(), "erp:" + responses);
|
// return ReturnDto<int>.QuickReturn(0,
|
// ReturnCode.Default, responses);
|
// }
|
|
// return ReturnDto<int>.QuickReturn(1, ReturnCode.Success, "操作成功!");
|
//}
|
|
///// <summary>
|
///// 生产领料单反审核
|
///// </summary>
|
///// <param name="model"></param>
|
///// <returns></returns>
|
//[RequestMethod(RequestMethods.POST)]
|
//public ReturnDto<int> SCLLReverseAuditErp([FromBody] MesInvItemOuts model)
|
//{
|
// var mesInvItemOuts = Db.Queryable<MesInvItemOuts>()
|
// .Where(a => a.ItemOutNo == model.ItemOutNo).First();
|
|
// if (mesInvItemOuts == null) throw new Exception("领料单号不存在");
|
|
// var womcaa = Db.Queryable<Womcaa>()
|
// .Where(s => s.Caa022.ToString() == mesInvItemOuts.WorkNo).First();
|
|
// if (womcaa == null) throw new Exception("任务单号不存在");
|
|
// var womdaa = Db.Queryable<Womdaa>()
|
// .Where(s => s.Daa001 == mesInvItemOuts.PbillNo).First();
|
|
// if (womdaa == null) throw new Exception("工单号不存在");
|
|
// var C_DEPARTMENTCODE = Db.Queryable<SysDepartment, MesInvItemOuts>(
|
// (a, b) => new object[]
|
// {
|
// JoinType.Left, a.Departmentid.ToString() == b.OutPart
|
// }).Where((a, b) => b.OutPart == mesInvItemOuts.OutPart)
|
// .Select((a, b) => a.Departmentcode).First();
|
|
// if (C_DEPARTMENTCODE == null) throw new Exception("部门信息不存在");
|
|
// // if (mesInvItemOuts.Status == 1) throw new Exception("领料单已审核,不能重复推送");
|
|
// var _msgObj = MesToErpParam(mesInvItemOuts.Guid, null, "", ErpOperationType.ProductionPickReverseAudit);
|
// var responses = InterfaceUtil.ResendERP(_msgObj);
|
// if (responses.StartsWith("返回报错"))
|
// {
|
// LogHelper.Debug(ToString(), "erp:" + responses);
|
// return ReturnDto<int>.QuickReturn(0,
|
// ReturnCode.Default, responses);
|
// }
|
|
// return ReturnDto<int>.QuickReturn(1, ReturnCode.Success, "操作成功!");
|
//}
|
|
//private string SCLLReverseAuditErpParamet(Guid formId)
|
//{
|
// var encodedUrl = "taskname=SCLL&mesid=" + formId +
|
// "&optype=delete&datajson={}";
|
|
// return encodedUrl;
|
//}
|
|
/// <summary>
|
/// 生产领料单查询
|
/// </summary>
|
/// <param name="query"></param>
|
/// <returns></returns>
|
[RequestMethod(RequestMethods.POST)]
|
public ReturnDto<PageList<MesInvItemOuts>> GetListPageSCLL(PageQuery query)
|
{
|
var itemsList = GetOut(query, Guid.Empty);
|
|
var pageList = new PageList<MesInvItemOuts>(itemsList.Item1,
|
itemsList.totalCount,
|
query.everyPageSize);
|
return ReturnDto<PageList<MesInvItemOuts>>.QuickReturn(pageList,
|
ReturnCode.Success, "读取成功");
|
}
|
|
[RequestMethod(RequestMethods.POST)]
|
public ReturnDto<MesInvItemOuts> GetModelSCLL(
|
[FromBody] MesInvItemOuts model)
|
{
|
var query = new PageQuery
|
{
|
currentPage = 1,
|
everyPageSize = 1
|
};
|
|
var (mesInvItemOutsList, totalCount) = GetOut(query, model.Guid);
|
|
if (totalCount <= 0)
|
return ReturnDto<MesInvItemOuts>.QuickReturn(new MesInvItemOuts(),
|
ReturnCode.Default,
|
"读取失败!");
|
|
var mesInvItemOuts = mesInvItemOutsList[0];
|
|
mesInvItemOuts.MesInvItemOutCDetailsList =
|
GetMesInvItemOutCDetailsSCLL(mesInvItemOuts.Guid);
|
|
mesInvItemOuts.MesInvItemOutItemsList =
|
getInvItemOutItemsListSCLL(mesInvItemOuts.Guid);
|
|
return ReturnDto<MesInvItemOuts>.QuickReturn(mesInvItemOuts,
|
ReturnCode.Success, "读取成功!");
|
}
|
|
private List<MesInvItemOutCDetails> GetMesInvItemOutCDetailsSCLL(
|
Guid? itemOutId)
|
{
|
return Db.Queryable<MesInvItemOutCDetails, MesItems,
|
MesDepots, MesDepotSections>(
|
(b, c, d, e) => new object[]
|
{
|
JoinType.Left, b.ItemId == c.Id,
|
JoinType.Left, b.DepotId == d.DepotId,
|
JoinType.Left, b.DepotSectionCode == e.DepotSectionCode
|
})
|
.Where((b, c, d, e) => b.ItemOutId == itemOutId)
|
.Select<MesInvItemOutCDetails>((b, c, d, e) =>
|
new MesInvItemOutCDetails
|
{
|
Guid = b.Guid,
|
DepotSectionCode = b.DepotSectionCode,
|
DepotCode = d.DepotCode,
|
ForceOutFlag = b.ForceOutFlag,
|
ItemNo = c.ItemNo,
|
Quantity = b.Quantity,
|
ItemBarcode = b.ItemBarcode,
|
ItemName = c.ItemName,
|
ItemModel = c.ItemModel,
|
ColorName = c.ColorName,
|
DepotName = d.DepotName,
|
DepotSectionName = e.DepotSectionName
|
}).ToList();
|
}
|
|
private List<MesInvItemOutItems> getInvItemOutItemsListSCLL(Guid itemOutId)
|
{
|
var mesInvItemOutItemsList = Db.Queryable<MesInvItemOutItems, MesItems>(
|
(c, s) => new object[]
|
{
|
JoinType.Inner, c.ItemId == s.Id
|
}).Where((c, s) => c.ItemOutId == itemOutId)
|
.Select<MesInvItemOutItems>((c, s) => new MesInvItemOutItems
|
{
|
Guid = c.Guid,
|
WorkNo = c.WorkNo,
|
Remark = c.Remark,
|
Quantity = c.Quantity,
|
ItemNo = s.ItemNo,
|
ItemName = s.ItemName,
|
ItemModel = s.ItemModel,
|
ItemUnit = s.ItemUnit
|
}).ToList();
|
|
return mesInvItemOutItemsList;
|
}
|
|
private (List<MesInvItemOuts>, int totalCount) GetOut(PageQuery query,
|
Guid? guid)
|
{
|
var _sbWhere = new StringBuilder(" 1=1" + query.keyWhere);
|
var _sbBy =
|
new StringBuilder(query.sortName + " " + query.sortOrder);
|
var totalCount = 0;
|
|
var result = Db
|
.Queryable<MesInvItemOuts, MesItems, MesInvBillType,
|
MesInvTransaction, SysDepartment, MesDepots, MesSupplier>(
|
(a, s, b, c, t, o, i) => new object[]
|
{
|
JoinType.Left, a.BoardItem == s.Id.ToString(),
|
JoinType.Left, a.BillTypeId == b.Id,
|
JoinType.Left, a.TransactionNo == c.TransactionNo,
|
JoinType.Left, a.OutPart == t.Id.ToString(),
|
JoinType.Left, a.DepotId == o.DepotId,
|
JoinType.Left, a.SuppId == i.Id
|
})
|
.Select((a, s, b, c, t, o, i) => new MesInvItemOuts
|
{
|
Guid = a.Guid,
|
OutType = a.OutType,
|
OutPart = a.OutPart,
|
BoardItem = a.BoardItem,
|
PbillNo = a.PbillNo,
|
OutDate = a.OutDate,
|
CheckDate = a.CheckDate,
|
WorkNo = a.WorkNo,
|
Status = a.Status,
|
CreateBy = a.CreateBy,
|
ItemOutNo = a.ItemOutNo,
|
ItemNo = s.ItemNo,
|
ItemName = s.ItemName,
|
BillTypeName = b.BillTypeName,
|
TransactionName = c.TransactionName,
|
DepotName = o.DepotName,
|
Departmentname = t.Departmentname,
|
SuppName = i.SuppName
|
})
|
.Where(a =>
|
a.BillTypeId == 200 && a.TransactionNo == 201 &&
|
a.IsVisual == true)
|
.Where(_sbWhere.ToString())
|
.WhereIF(UtilityHelper.CheckGuid(guid),
|
a => a.Guid == guid).OrderBy(_sbBy.ToString())
|
.ToPageList(query.currentPage, query.everyPageSize,
|
ref totalCount);
|
|
return (result, totalCount);
|
}
|
|
private string SCLLAuditErpParamet(Guid formId)
|
{
|
var materials = Db
|
.Queryable<MesInvItemOutCDetails, MesItems, MesUnit, MesDepots,
|
Womdab, Womcaa>(
|
(a, s, u, d, e, f) => new JoinQueryInfos(
|
JoinType.Left, a.ItemId == s.Id,
|
JoinType.Left, u.Id.ToString() == s.ItemUnit,
|
JoinType.Left, a.DepotId == d.DepotId,
|
JoinType.Left, a.Dabid == e.Guid,
|
JoinType.Left, e.Eid == f.Erpid
|
))
|
.Where((a, s, u, d, e, f) =>
|
a.ItemOutId == formId) // 根据 ITEM_OUT_ID 过滤
|
.GroupBy((a, s, u, d, e, f) => new
|
{
|
s.ItemNo, d.DepotCode, u.Fnumber, a.Guid, e.Erpid, f.Mtono,
|
f.Lot
|
})
|
.Select<Material>((a, s, u, d, e, f) => new Material
|
{
|
FMaterialId = s.ItemNo,
|
FUnitID = u.Fnumber,
|
FAppQty = SqlFunc.AggregateSum(a.Quantity).ToString() ?? "0",
|
FActualQty = SqlFunc.AggregateSum(a.Quantity).ToString() ?? "0",
|
FMtoNo = f.Mtono,
|
FLot = f.Lot,
|
FStockId = d.DepotCode,
|
FPPBomEntryId = e.Erpid.ToString(),
|
F_MES_ENTRYID = a.Guid
|
}).ToList();
|
|
|
var mm = Db.Queryable<MesInvItemOuts>()
|
.Where(a => a.Guid == formId).First();
|
|
var jsonEntries = materials.Select(d => new
|
{
|
d.FMaterialId,
|
d.FUnitID,
|
d.FAppQty,
|
d.FActualQty,
|
d.FMtoNo,
|
d.FLot,
|
d.FStockId,
|
d.FPPBomEntryId,
|
d.F_MES_ENTRYID
|
}).ToList();
|
var fdate = DateTime.Now.ToString("yyyy-MM-dd");
|
var jsonString = JsonConvert.SerializeObject(jsonEntries);
|
var encodedUrl = "taskname=SCLL&mesid=" + formId +
|
"&optype=create&datajson={\"F_MES_ID\":\"" + formId
|
+ "\",\"FDate\":\"" + fdate
|
+ "\",\"FPickerId\":\"" + _userCode
|
+ "\",\"scllentry\":" + jsonString
|
+ "}";
|
return encodedUrl;
|
}
|
|
|
/// <summary>
|
/// 生产领料单审核和反审核
|
/// </summary>
|
/// <param name="mode"></param>
|
/// <returns></returns>
|
[RequestMethod(RequestMethods.POST)]
|
public ReturnDto<ExpandoObject> EditModelSubmit([FromBody] dynamic mode)
|
{
|
string _guid = mode.guid;
|
dynamic m = new ExpandoObject();
|
m.outSum = 0;
|
m.outMsg = "";
|
using (var conn = new SqlConnection(DbHelperSQL.strConn))
|
{
|
using (var cmd = new SqlCommand("prc_scll_submit", conn))
|
{
|
try
|
{
|
conn.Open();
|
cmd.CommandType = CommandType.StoredProcedure;
|
SqlParameter[] parameters =
|
{
|
new("@outMsg", SqlDbType.NVarChar, 300),
|
new("@outSum", SqlDbType.Int),
|
new("@inEdtUserGuid", _userGuid),
|
new("@inOrderGuid", _guid),
|
new("@inFieldValue", 1),
|
new("@in1", ""),
|
new("@in2", "")
|
};
|
parameters[0].Direction = ParameterDirection.Output;
|
parameters[1].Direction = ParameterDirection.Output;
|
foreach (var parameter in parameters)
|
cmd.Parameters.Add(parameter);
|
cmd.ExecuteNonQuery();
|
m.outSum = parameters[1].Value.ToString();
|
m.outMsg = parameters[0].Value.ToString();
|
}
|
catch (Exception ex)
|
{
|
LogHelper.Debug(ToString(),
|
"prc_scll_submit error:" + ex.Message);
|
return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default,
|
ex.Message);
|
}
|
finally
|
{
|
conn.Close();
|
}
|
}
|
}
|
|
return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "操作成功!");
|
}
|
|
|
|
#endregion
|
|
#region CRUD
|
|
/// <summary>
|
/// 根据供应商id 读取退货物料
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
[RequestMethod(RequestMethods.POST)]
|
public ReturnDto<PageList<dynamic>> GetCgtlViews([FromBody] dynamic model)
|
{
|
int currentPage = model.currentPage;
|
int everyPageSize = model.everyPageSize;
|
string sortName = model.sortName;
|
string keyWhere = model.keyWhere;
|
string inBusType = model.inBusType;
|
string inSupId = model.inSupId;
|
var dset = new DataSet();
|
try
|
{
|
using (var conn = new SqlConnection(DbHelperSQL.strConn))
|
{
|
using (var cmd = new SqlCommand("[prc_cgth_select]", conn))
|
{
|
conn.Open();
|
cmd.CommandType = CommandType.StoredProcedure;
|
SqlParameter[] parameters =
|
{
|
new("@inCurrentPage", currentPage),
|
new("@inEveryPageSize", everyPageSize),
|
new("@inSortName", sortName),
|
new("@inSortOrder", ""),
|
new("@inQueryWhere", keyWhere),
|
new("@inBusType", inBusType),
|
new("@inSupId", inSupId),
|
new("@inP1", ""),
|
new("@inP2", "")
|
};
|
foreach (var parameter in parameters)
|
cmd.Parameters.Add(parameter);
|
using (var dt =
|
new SqlDataAdapter(cmd))
|
{
|
dt.Fill(dset, "0");
|
}
|
}
|
|
conn.Close();
|
}
|
}
|
catch (Exception ex)
|
{
|
LogHelper.Debug(ToString(), "GetListPage error:" + ex.Message);
|
return ReturnDto<PageList<dynamic>>.QuickReturn(
|
default(PageList<dynamic>), ReturnCode.Exception, "读取失败");
|
}
|
|
var _pglist = new PageList<dynamic>
|
{
|
total = 0,
|
everyPageSize = 0,
|
pages = 0,
|
list = new List<dynamic>()
|
};
|
if (dset != null && dset.Tables.Count > 0 &&
|
dset.Tables[0].Rows.Count > 0) //有数据
|
{
|
var intTotal =
|
int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString());
|
var pages = intTotal % everyPageSize != 0
|
? intTotal / everyPageSize + 1
|
: intTotal / everyPageSize;
|
_pglist.total = intTotal;
|
_pglist.everyPageSize = everyPageSize;
|
_pglist.pages = pages;
|
var _dy = dset.Tables[0].TableToDynamicList();
|
_pglist.list = _dy;
|
}
|
|
return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
|
ReturnCode.Success, "读取成功");
|
}
|
|
/// <summary>
|
/// 根据用户选择的采购明细guid,读取需要作入库到货单的明细
|
/// </summary>
|
/// <param name="query"></param>
|
/// <returns></returns>
|
[RequestMethod(RequestMethods.POST)]
|
public ReturnDto<List<dynamic>> GetListPageByThmxGuid(
|
JArray guidList)
|
{
|
var intArray = guidList.ToObject<string[]>();
|
var sbLine = new StringBuilder();
|
foreach (var str in intArray)
|
{
|
if (sbLine.Length > 0)
|
sbLine.Append(",");
|
sbLine.Append(str);
|
}
|
|
var lst = new List<dynamic>();
|
var dset = new DataSet();
|
using (var conn = new SqlConnection(DbHelperSQL.strConn))
|
{
|
using (var cmd = new SqlCommand("[prc_cgth_get_mx_from_dh]", conn))
|
{
|
try
|
{
|
conn.Open();
|
cmd.CommandType = CommandType.StoredProcedure;
|
SqlParameter[] parameters =
|
{
|
new("@inP1", sbLine.ToString())
|
};
|
foreach (var parameter in parameters)
|
cmd.Parameters.Add(parameter);
|
using (var dt =
|
new SqlDataAdapter(cmd))
|
{
|
dt.Fill(dset, "0");
|
}
|
}
|
catch (Exception ex)
|
{
|
LogHelper.Debug(ToString(),
|
"prc_cgth_get_mx_from_dh error:" + ex.Message);
|
}
|
finally
|
{
|
conn.Close();
|
}
|
}
|
}
|
|
if (dset != null && dset.Tables.Count > 0 &&
|
dset.Tables[0].Rows.Count > 0) //有数据
|
lst = dset.Tables[0].TableToDynamicList();
|
|
return ReturnDto<List<dynamic>>.QuickReturn(lst, ReturnCode.Success,
|
"读取成功!");
|
}
|
|
|
/// <summary>
|
/// 查询列表,支持分页
|
/// </summary>
|
/// <param name="query"></param>
|
/// <returns></returns>
|
[RequestMethod(RequestMethods.POST)]
|
public ReturnDto<PageList<MesInvItemOuts>> GetListPage(PageQuery query)
|
{
|
var itemsList = getPage(query, Guid.Empty);
|
|
var pageList = new PageList<MesInvItemOuts>(itemsList.Item1,
|
itemsList.totalCount,
|
query.everyPageSize);
|
return ReturnDto<PageList<MesInvItemOuts>>.QuickReturn(pageList,
|
ReturnCode.Success, "读取成功");
|
}
|
|
private (List<MesInvItemOuts>, int totalCount) getPage(PageQuery query,
|
Guid? guid)
|
{
|
var totalCount = 0;
|
|
var mesInvItemOutsList = Db
|
.Queryable<MesInvItemOuts, MesDepots, MesSupplier, SysUser,
|
SysUser>(
|
(a, e, i, u1, u3) => new object[]
|
{
|
JoinType.Left, a.DepotId == e.DepotId,
|
JoinType.Left, a.SuppId == i.Id,
|
JoinType.Left, a.CreateBy == u1.Account,
|
JoinType.Left, a.CheckUser == u3.Account
|
})
|
.WhereIF(UtilityHelper.CheckGuid(guid),
|
(a, e, i, u1, u3) => a.Guid == guid)
|
.OrderByDescending((a, e, i, u1, u3) => a.ItemOutNo)
|
.Select((a, e, i, u1, u3) => new MesInvItemOuts
|
{
|
Guid = a.Guid,
|
FType = a.FType,
|
SuppNo = i.SuppNo,
|
CheckDate = a.CheckDate,
|
CheckUser = a.CheckUser,
|
Nflag = a.Nflag,
|
Reason = a.Reason,
|
Remark = a.Remark,
|
Fmrmode = a.Fmrmode,
|
DepotCode = e.DepotCode,
|
CreateDate = a.CreateDate,
|
CreateBy = a.CreateBy,
|
Status = a.Status,
|
ItemOutNo = a.ItemOutNo,
|
DepotName = e.DepotName,
|
SuppName = i.SuppName,
|
CreateByFname = u1.UserName,
|
CheckUserFname = u3.UserName,
|
DepotId = a.DepotId,
|
SuppId = a.SuppId
|
}).ToPageList(query.currentPage, query.everyPageSize,
|
ref totalCount);
|
|
return (mesInvItemOutsList, totalCount);
|
}
|
|
/// <summary>
|
/// 根据主表id读取主表和子表
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
[RequestMethod(RequestMethods.POST)]
|
public ReturnDto<MesInvItemOuts> GetModel(
|
[FromBody] MesInvItemOuts model)
|
{
|
var query = new PageQuery
|
{
|
currentPage = 1,
|
everyPageSize = 1
|
};
|
|
var (mesInvItemOutsList, totalCount) = getPage(query, model.Guid);
|
|
if (totalCount <= 0)
|
return ReturnDto<MesInvItemOuts>.QuickReturn(new MesInvItemOuts(),
|
ReturnCode.Default,
|
"读取失败!");
|
|
var mesInvItemOuts = mesInvItemOutsList[0];
|
|
mesInvItemOuts.MesInvItemOutCDetailsList =
|
GetMesInvItemOutCDetails(mesInvItemOuts.Guid);
|
|
mesInvItemOuts.MesInvItemOutItemsList =
|
getMesInvItemOutItemsList(mesInvItemOuts.Guid);
|
|
return ReturnDto<MesInvItemOuts>.QuickReturn(mesInvItemOuts,
|
ReturnCode.Success, "读取成功!");
|
}
|
|
private List<MesInvItemOutCDetails> GetMesInvItemOutCDetails(Guid itemOutId)
|
{
|
return Db.Queryable<MesInvItemOutCDetails, MesInvItemBarcodes, MesItems,
|
MesDepots, MesUnit>(
|
(b, bar, c, d, e) => new object[]
|
{
|
JoinType.Left, b.ItemBarcode == bar.ItemBarcode,
|
JoinType.Left, b.ItemId == c.Id,
|
JoinType.Left, b.DepotId == d.DepotId,
|
JoinType.Left, c.ItemUnit == e.Id.ToString()
|
})
|
.Where((b, bar, c, d, e) => b.ItemOutId == itemOutId)
|
.Select<MesInvItemOutCDetails>((b, bar, c, d, e) =>
|
new MesInvItemOutCDetails
|
{
|
Guid = b.Guid,
|
Quantity = b.Quantity,
|
DepotCode = b.DepotCode,
|
DepotSectionCode = b.DepotSectionCode,
|
EbelnK3id = b.EbelnK3id,
|
LineK3id = b.LineK3id,
|
ItemNo = c.ItemNo,
|
ItemBarcode = b.ItemBarcode,
|
ItemName = c.ItemName,
|
ItemModel = c.ItemModel,
|
DepotName = d.DepotName,
|
Fnumber = e.Fnumber,
|
DepotId = b.DepotId,
|
ItemId = b.ItemId,
|
ItemOutId = b.ItemOutId
|
}).ToList();
|
}
|
|
private List<MesInvItemOutItems> getMesInvItemOutItemsList(Guid itemOutId)
|
{
|
var mesInvItemOutItemsList = Db.Queryable<MesInvItemOutItems, MesItems>(
|
(c, s) => new object[]
|
{
|
JoinType.Inner, c.ItemId == s.Id
|
}).Where((c, s) => c.ItemOutId == itemOutId)
|
.Select<MesInvItemOutItems>((c, s) => new MesInvItemOutItems
|
{
|
Guid = c.Guid,
|
TlQty = c.TlQty,
|
WorkLine = c.WorkLine,
|
PbillNo = c.PbillNo,
|
LineK3id = c.LineK3id,
|
DepotCode = c.DepotCode,
|
Status = c.Status,
|
Remark = c.Remark,
|
EbelnK3id = c.EbelnK3id,
|
Quantity = c.Quantity,
|
ItemNo = s.ItemNo,
|
ItemName = s.ItemName,
|
ItemModel = s.ItemModel,
|
ItemId = c.ItemId,
|
RkNo = c.RkNo,
|
WorkNo = c.WorkNo,
|
AboutGuid = c.AboutGuid
|
}).ToList();
|
|
foreach (var mesInvItemOutItemse in mesInvItemOutItemsList)
|
{
|
var u = Db.Queryable<MesInvItemOutItems>()
|
.GroupBy(it => new
|
{ it.ItemId, it.PbillNo, it.WorkLine, it.RkNo })
|
.Where(it => it.ItemId == mesInvItemOutItemse.ItemId
|
// && it.PbillNo == mesInvItemOutItemse.PbillNo
|
// && it.WorkLine == mesInvItemOutItemse.WorkLine
|
&& it.RkNo == mesInvItemOutItemse.RkNo)
|
.Select(it => new
|
{
|
KtQty = SqlFunc.AggregateSum(it.Quantity ?? 0)
|
}).First();
|
|
var s1 = Db.Queryable<MesInvItemInCItems>()
|
.GroupBy(it => new
|
{ it.ItemId, it.Ebeln, it.WorkLine, it.BillNo })
|
.Where(it => it.ItemId == mesInvItemOutItemse.ItemId
|
&& it.CbillNo == mesInvItemOutItemse.WorkNo
|
// && it.WorkLine == mesInvItemOutItemse.WorkLine
|
// && it.BillNo == mesInvItemOutItemse.RkNo
|
)
|
.Select(it => new
|
{
|
RkQty = SqlFunc.AggregateSum(it.Quantity ?? 0)
|
}).First();
|
|
mesInvItemOutItemse.KtQty = s1.RkQty - u.KtQty;
|
}
|
|
return mesInvItemOutItemsList;
|
}
|
|
/// <summary>
|
/// 增加或编辑实体
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
[RequestMethod(RequestMethods.POST)]
|
public ReturnDto<string?> EditModel([FromBody] MesInvItemOuts model)
|
{
|
Guid? guid = model.Guid; //主键
|
var bz = model.Remark; //备注
|
var gysId = model.SuppId; //供应商
|
var ckId = model.DepotId; //仓库
|
var fType = model.FType; //0=采购,1=委外
|
var Remark = model.Remark;
|
var Fmrmode = model.Fmrmode;
|
var Reason = model.Reason;
|
var _sb = new StringBuilder();
|
var _split = "|";
|
foreach (var m in model.MesInvItemOutItemsList)
|
{
|
var _line = m.AboutGuid + _split + m.Quantity + _split +
|
(UtilityHelper.CheckGuid(m.Guid)
|
? m.Guid.ToString()
|
: Guid.Empty.ToString());
|
if (_sb.Length > 0)
|
_sb.Append("~");
|
_sb.Append(_line);
|
}
|
|
var _outMsg = "";
|
var _outSum = -1;
|
using (var conn = new SqlConnection(DbHelperSQL.strConn))
|
{
|
using (var cmd = new SqlCommand("[prc_cgth_edt]", conn))
|
{
|
try
|
{
|
conn.Open();
|
cmd.CommandType = CommandType.StoredProcedure;
|
SqlParameter[] parameters =
|
{
|
new("@outMsg", SqlDbType.NVarChar, 300),
|
new("@outSum", SqlDbType.Int),
|
new("@inOrderGuid",
|
UtilityHelper.CheckGuid(guid)
|
? guid
|
: DBNull.Value),
|
new("@inBz", bz),
|
new("@inGysId", gysId),
|
new("@inCkId", ckId),
|
new("@inFType", fType),
|
new("@Fmrmode", Fmrmode),
|
new("@Reason", Reason),
|
new("@inEdtUserGuid ", _userGuid),
|
new("@inLineList ", _sb.ToString())
|
};
|
parameters[0].Direction = ParameterDirection.Output;
|
parameters[1].Direction = ParameterDirection.Output;
|
foreach (var parameter in parameters)
|
cmd.Parameters.Add(parameter);
|
cmd.ExecuteNonQuery();
|
_outMsg = parameters[0].Value.ToString();
|
_outSum = int.Parse(parameters[1].Value.ToString());
|
}
|
catch (Exception ex)
|
{
|
LogHelper.Debug(ToString(),
|
"prc_cgdhd_Edt error:" + ex.Message);
|
_outMsg = ex.Message;
|
_outSum = -1;
|
}
|
finally
|
{
|
conn.Close();
|
}
|
}
|
}
|
|
if (_outSum <= 0)
|
return ReturnDto<string>.QuickReturn(guid.ToString(),
|
ReturnCode.Exception, _outMsg);
|
return ReturnDto<string>.QuickReturn(guid.ToString(),
|
ReturnCode.Success, _outMsg);
|
}
|
|
|
/// <summary>
|
/// 删除主表
|
/// </summary>
|
/// <param name="guid"></param>
|
/// <returns></returns>
|
[RequestMethod(RequestMethods.POST)]
|
public ReturnDto<int?> DeleteModel([FromBody] JArray guidList)
|
{
|
var intArray = guidList.ToObject<string[]>();
|
var cont = IsChkOrUnChk(intArray[0]);
|
if (cont > 0)
|
return ReturnDto<int>.QuickReturn(default(int?),
|
ReturnCode.Exception, "删除失败,该信息已被审核!");
|
|
int? rtnInt = base.DeleteByIds(intArray)
|
? intArray.Length
|
: 0;
|
|
var guidArray = Guid.Empty;
|
|
foreach (var t in intArray)
|
{
|
if (Guid.TryParse(t, out var guid))
|
guidArray = guid;
|
|
Db.Deleteable<MesInvItemOutItems>()
|
.Where(s => s.ItemOutId == guidArray)
|
.ExecuteCommand();
|
|
Db.Deleteable<MesInvItemOutCDetails>()
|
.Where(s => s.ItemOutId == guidArray)
|
.ExecuteCommand();
|
}
|
|
return rtnInt > 0
|
? ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Success,
|
"操作成功,共删除" + rtnInt + "条数据!")
|
: ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Exception,
|
"删除失败,请重试!");
|
}
|
|
|
/// <summary>
|
/// 删除明细实体,支持批量删除
|
/// </summary>
|
/// <param name="guid"></param>
|
/// <returns></returns>
|
[RequestMethod(RequestMethods.POST)]
|
public ReturnDto<int?> DeleteModelMx2([FromBody] JArray guidList)
|
{
|
var intArray = guidList.ToObject<string[]>();
|
var cont = 0;
|
cont = IsChkOrUnChkByMx2(intArray[0]);
|
if (cont > 0)
|
return ReturnDto<int>.QuickReturn(default(int?),
|
ReturnCode.Exception, "删除失败,该信息已被审核!");
|
int? rtnInt = (int)ReturnCode.Default;
|
var _manager = new MesInvItemOutItemsManager();
|
rtnInt = _manager.DeleteById(intArray) ? intArray.Length : 0;
|
if (rtnInt > 0)
|
return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Success,
|
"操作成功,共删除" + rtnInt + "条数据!");
|
return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Exception,
|
"删除失败,请重试!");
|
}
|
|
|
private int IsChkOrUnChkByMx2(string _mxGuid)
|
{
|
var _manager = new MesInvItemOutItemsManager();
|
var md = _manager.GetById(_mxGuid);
|
return IsChkOrUnChk(md.ItemOutId.ToString());
|
}
|
|
//查询主表是否审核
|
private int IsChkOrUnChk(string? _guid)
|
{
|
var cont = Db.Queryable<MesInvItemOuts>()
|
.Where(it =>
|
it.Guid == Guid.Parse(_guid) && it.Status == 1)
|
.Count();
|
return cont;
|
}
|
|
#endregion
|
}
|