using MES.Service.DB; using MES.Service.Dto.service; using MES.Service.Modes; using SqlSugar; namespace MES.Service.service.Warehouse; public class MesInvItemArnDetailManager : Repository { //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 GetDetails(WarehouseQuery query) { // 查询 return Db.Queryable( (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 GetMaterial(WarehouseQuery query) { // 查询 var result = Db .Queryable( (a, d, b, c, t, z) => 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, JoinType.Inner, z.ReleaseNo == a.ReleaseNo }) .Where((a, d, b, c, t, z) => a.FngHandle == "退货" && z.FcheckResu == "不合格" && 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() .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() .Where(a => a.Id == material.FmesEntryId).Single(); if (mesQaItemsDetect01 == null) return 0; var suppName = db.Queryable() .Where(b => b.SuppNo == mesQaItemsDetect01.SuppNo) .Select(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() .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() .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(); 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; } }