using MES.Service.DB;
|
using MES.Service.Dto.service;
|
using MES.Service.Modes;
|
using SqlSugar;
|
|
namespace MES.Service.service.Warehouse;
|
|
public class MesInvItemArnDetailManager : Repository<MesInvItemArnDetail>
|
{
|
//var result = db.Ado.GetString($"SELECT f_getseqnextvalue('{sequenceName}') FROM DUAL");
|
|
private readonly PurdhbManager purdhbManager = new();
|
private readonly PurdkaManager purdkaManager = new();
|
private readonly PurdkbManager purdkbManager = new();
|
|
private readonly MesQaItemsDetect01Manager rohInDataManager = new();
|
//当前类已经继承了 Repository 增、删、查、改的方法
|
|
//这里面写的代码不会给覆盖,如果要重新生成请删除 MesInvItemArnDetailManager.cs
|
|
public List<MesInvItemArnDetail> GetDetails(WarehouseQuery query)
|
{
|
// 查询
|
return Db.Queryable<MesInvItemArnDetail, MesItems, MesUnit>(
|
(c, t, u) => new object[]
|
{
|
JoinType.Left,
|
c.ItemNo == t.ItemNo && c.Company == t.Company &&
|
c.Factory == t.Factory,
|
JoinType.Left,
|
t.Fpurchaseunitid == u.Id && t.Factory == u.Factory &&
|
t.Company == u.Company
|
})
|
.Where((c, t, u) => c.Mid == query.id)
|
.Select((c, t, u) => new MesInvItemArnDetail
|
{
|
CheckRes = c.CheckRes,
|
itemModel = t.ItemModel,
|
itemName = t.ItemName,
|
UrgentFlag = c.UrgentFlag,
|
Memo = c.Memo,
|
Quantity = c.Quantity,
|
SubQty = c.SubQty,
|
CheckStates = c.CheckStates,
|
WorkLine = c.WorkLine,
|
IsdepsIn = c.IsdepsIn,
|
OkRkqty = c.OkRkqty,
|
Fname = u.Fname,
|
EbelnQty = c.EbelnQty,
|
ItemNo = c.ItemNo,
|
Id = c.Id,
|
Ebeln = c.Ebeln
|
})
|
.ToList();
|
}
|
|
public List<Material> GetMaterial(WarehouseQuery query)
|
{
|
// 查询
|
var result = Db
|
.Queryable<MesQaItemsDetect01, MesInvItemArn, MesInvItemArnDetail,
|
MesItems, MesUnit>(
|
(a, d, b, c, t) => new object[]
|
{
|
JoinType.Inner, d.BillNo == a.LotNo,
|
JoinType.Inner, d.Id == b.Mid && b.ItemNo == a.ItemNo,
|
JoinType.Inner,
|
a.ItemNo == c.ItemNo && a.Company == c.Company &&
|
a.Factory == c.Factory,
|
JoinType.Inner, c.Fpurchaseunitid == t.Id
|
})
|
.Where((a, d, b, c, t) => a.FngHandle == "退货" &&
|
query.ItemArnDetailIds.Contains(b.Id))
|
.Select((a, d, b, c, t) => new Material
|
{
|
FmrMode = a.Fmrmode,
|
FngDesc = a.FngDesc,
|
FsrcEntryId = b.Id,
|
FrmRealQty = b.Quantity,
|
FmaterialId = a.ItemNo,
|
FstockId = d.DepotsCode,
|
Funit = t.Fnumber,
|
FmesEntryId = a.Id,
|
Mid = d.Id
|
})
|
.ToList();
|
|
return result;
|
}
|
|
public bool SetMaterial(Material material)
|
{
|
var b1 = UseTransaction(db =>
|
{
|
var executeCommand = db.Updateable<MesInvItemArnDetail>()
|
.SetColumns(s => s.CheckRes == "不合格")
|
.SetColumns(s => s.CheckStates == "退货")
|
.SetColumns(s => s.Ischeck == 1)
|
.Where(s =>
|
s.Mid == material.Mid && s.ItemNo == material.FmaterialId)
|
.ExecuteCommand();
|
|
var mesQaItemsDetect01 = db.Queryable<MesQaItemsDetect01>()
|
.Where(a => a.Id == material.FmesEntryId).Single();
|
|
if (mesQaItemsDetect01 == null) return 0;
|
|
var suppName = db.Queryable<MesSupplier>()
|
.Where(b => b.SuppNo == mesQaItemsDetect01.SuppNo)
|
.Select<string>(b => b.SuppName).First();
|
|
var CIdt = db.Ado.GetString(
|
"SELECT f_getseqnextvalue('mes_inv_item_ins') FROM DUAL");
|
|
var billNo = db.Ado.GetString(
|
"SELECT getbillcode1('1000', '1000', 'INV_IN_BACK') FROM DUAL");
|
|
// PURDKA
|
var purdka = GetPurdka(CIdt, billNo, mesQaItemsDetect01, suppName);
|
|
executeCommand += db.Insertable(purdka).ExecuteCommand();
|
|
executeCommand += InsertPurdkbs(db, mesQaItemsDetect01, billNo);
|
|
executeCommand += db.Updateable<MesQaItemsDetect01>()
|
.SetColumns(c => c.Modify1Flag == 1)
|
.SetColumns(c => c.Modify1By == material.UserName)
|
.SetColumns(c => c.Modify1Date == DateTime.Now)
|
.SetColumns(c => c.FngHandle == "退货")
|
.Where(c => c.ReleaseNo == mesQaItemsDetect01.ReleaseNo)
|
.ExecuteCommand();
|
|
return executeCommand;
|
}) >= 4;
|
|
if (b1 == false) throw new NotImplementedException("推送失败,Mes方面出现问题");
|
|
return b1;
|
}
|
|
private int InsertPurdkbs(SqlSugarScope db,
|
MesQaItemsDetect01 mesQaItemsDetect01, string billNo)
|
{
|
var purdhbs = db.Queryable<Purdhb>()
|
.Where(c => c.Dhb001 == mesQaItemsDetect01.LotNo
|
&& c.Dhb003 == mesQaItemsDetect01.ItemNo)
|
.Select(c => new Purdhb
|
{
|
Dhb002 = c.Dhb002,
|
Dhb003 = c.Dhb003,
|
Dhb006 = c.Dhb006,
|
Dhb007 = c.Dhb007,
|
Dhb017 = c.Dhb017,
|
Dhb018 = c.Dhb018,
|
Dhb001 = c.Dhb001,
|
Dhb042 = c.Dhb042
|
}).ToList();
|
|
var list = new List<Purdkb>();
|
|
purdhbs.ForEach(s =>
|
{
|
var id = db.Ado.GetString(
|
"SELECT f_getseqnextvalue('MES_INV_ITEM_IN_C_DETAILS') FROM DUAL");
|
|
var purdkb = new Purdkb();
|
purdkb.Id = Convert.ToDecimal(id);
|
purdkb.Dkb001 = billNo;
|
purdkb.Dkb002 = s.Dhb002;
|
purdkb.Dkb003 = s.Dhb003;
|
purdkb.Dkb006 = s.Dhb006;
|
purdkb.Dkb007 = s.Dhb006;
|
purdkb.Dkb008 = 0;
|
purdkb.Dkb009 = s.Dhb007;
|
purdkb.Dkb010 = s.Dhb017;
|
purdkb.Dkb011 = s.Dhb018;
|
purdkb.Dkb012 = s.Dhb001;
|
purdkb.Dkb013 = s.Dhb002;
|
purdkb.Dkb016 = s.Dhb042;
|
|
list.Add(purdkb);
|
});
|
|
var insertRange = db.Insertable(list).ExecuteCommand();
|
|
return insertRange == purdhbs.Count ? 1 : 0;
|
}
|
|
private static Purdka GetPurdka(string CIdt, string billNo,
|
MesQaItemsDetect01 mesQaItemsDetect01, string suppName)
|
{
|
var date = DateTime.Now.ToString("yyyy-MM-dd");
|
var purdka = new Purdka();
|
purdka.Id = Convert.ToDecimal(CIdt);
|
purdka.Dka001 = billNo;
|
purdka.Dka002 = "采购退货";
|
purdka.Dka003 = date;
|
purdka.Dka004 = date;
|
purdka.Dka005 = mesQaItemsDetect01.SuppNo;
|
purdka.Dka006 = suppName;
|
purdka.Dka010 = "1";
|
purdka.Dka013 = 0;
|
purdka.Createuser = mesQaItemsDetect01.LastupdateBy;
|
return purdka;
|
}
|
}
|