MES.Service/Dto/service/WarehouseQuery.cs
MES.Service/Modes/MesInvBusiness2.cs
MES.Service/Modes/MesInvItemArn.cs
MES.Service/Modes/MesInvItemBarcodes.cs
MES.Service/Modes/MesInvItemInCItems.cs
MES.Service/Modes/MesInvItemMoves.cs
MES.Service/Modes/MesInvItemMovesCDetails.cs
@@ -11,7 +11,8 @@ /// <summary> /// seq_inv_id /// </summary> [SugarColumn(ColumnName = "ID", IsPrimaryKey = true)] [SugarColumn(ColumnName = "ID", OracleSequenceName = "SEQ_INV_ID", IsPrimaryKey = true)] public decimal Id { get; set; } /// <summary> @@ -23,25 +24,25 @@ /// 物料条码 /// </summary> [SugarColumn(ColumnName = "ITEM_BARCODE")] public string ItemBarcode { get; set; } public string? ItemBarcode { get; set; } /// <summary> /// 客户物料编码(无条码手工录入,有条码为冗余字段) /// </summary> [SugarColumn(ColumnName = "C_ITEM_CODE")] public string CItemCode { get; set; } public string? CItemCode { get; set; } /// <summary> /// 信华物料编码(无条码手工录入,有条码为冗余字段) /// </summary> [SugarColumn(ColumnName = "ITEM_NO")] public string ItemNo { get; set; } public string? ItemNo { get; set; } /// <summary> /// 厂家批次 /// </summary> [SugarColumn(ColumnName = "LOT_NO")] public string LotNo { get; set; } public string? LotNo { get; set; } /// <summary> /// 数量(无条码手工录入,有条码为冗余字段) @@ -65,7 +66,7 @@ /// 创建人 /// </summary> [SugarColumn(ColumnName = "CREATE_BY")] public string CreateBy { get; set; } public string? CreateBy { get; set; } /// <summary> /// 创建时间 @@ -77,7 +78,7 @@ /// 最后更新人 /// </summary> [SugarColumn(ColumnName = "LASTUPDATE_BY")] public string LastupdateBy { get; set; } public string? LastupdateBy { get; set; } /// <summary> /// 最后更新时间 @@ -101,79 +102,79 @@ /// 客户编码 /// </summary> [SugarColumn(ColumnName = "CUST_NO")] public string CustNo { get; set; } public string? CustNo { get; set; } /// <summary> /// 任务令号 /// </summary> [SugarColumn(ColumnName = "TASK_NO")] public string TaskNo { get; set; } public string? TaskNo { get; set; } /// <summary> /// 移出仓库编号 /// </summary> [SugarColumn(ColumnName = "FROM_DEPOTS_CODE")] public string FromDepotsCode { get; set; } public string? FromDepotsCode { get; set; } /// <summary> /// 移出库位编号 /// </summary> [SugarColumn(ColumnName = "FROM_DEPOT_SECTIONS_CODE")] public string FromDepotSectionsCode { get; set; } public string? FromDepotSectionsCode { get; set; } /// <summary> /// 条码备注 /// </summary> [SugarColumn(ColumnName = "REMARK")] public string Remark { get; set; } public string? Remark { get; set; } /// <summary> /// 分厂编码 /// </summary> [SugarColumn(ColumnName = "FACTORY")] public string Factory { get; set; } public string? Factory { get; set; } /// <summary> /// 公司代码 /// </summary> [SugarColumn(ColumnName = "COMPANY")] public string Company { get; set; } public string? Company { get; set; } /// <summary> /// 箱号 /// </summary> [SugarColumn(ColumnName = "BOX_NO")] public string BoxNo { get; set; } public string? BoxNo { get; set; } /// <summary> /// 卡板号 /// </summary> [SugarColumn(ColumnName = "KO_NO")] public string KoNo { get; set; } public string? KoNo { get; set; } /// <summary> /// 移入仓库编号 /// </summary> [SugarColumn(ColumnName = "INV_DEPOTS_CODE")] public string InvDepotsCode { get; set; } public string? InvDepotsCode { get; set; } /// <summary> /// 移入库位编号 /// </summary> [SugarColumn(ColumnName = "INV_DEPOT_SECTIONS_CODE")] public string InvDepotSectionsCode { get; set; } public string? InvDepotSectionsCode { get; set; } /// <summary> /// 质检结果 /// </summary> [SugarColumn(ColumnName = "IQC_STATUS")] public string IqcStatus { get; set; } public string? IqcStatus { get; set; } /// <summary> /// 小车编号 /// </summary> [SugarColumn(ColumnName = "FCAR")] public string Fcar { get; set; } public string? Fcar { get; set; } /// <summary> /// 入库日期 @@ -191,7 +192,7 @@ /// 提交重检人 /// </summary> [SugarColumn(ColumnName = "VISABLE_SUBMIT_BY")] public string VisableSubmitBy { get; set; } public string? VisableSubmitBy { get; set; } /// <summary> /// 提交重检时间 @@ -203,13 +204,13 @@ /// 产品型号 /// </summary> [SugarColumn(ColumnName = "BOARD_STYLE")] public string BoardStyle { get; set; } public string? BoardStyle { get; set; } /// <summary> /// 任务单号 /// </summary> [SugarColumn(ColumnName = "WORK_NO")] public string WorkNo { get; set; } public string? WorkNo { get; set; } /// <summary> /// 任务单行号 @@ -221,7 +222,7 @@ /// 供应商编号 /// </summary> [SugarColumn(ColumnName = "SUPP_NO")] public string SuppNo { get; set; } public string? SuppNo { get; set; } /// <summary> /// 调入 MES.Service/Modes/MesInvItemStocks.cs
@@ -19,25 +19,25 @@ /// 生产订单 /// </summary> [SugarColumn(ColumnName = "TASK_NO")] public string TaskNo { get; set; } public string? TaskNo { get; set; } /// <summary> /// 物料条码 /// </summary> [SugarColumn(ColumnName = "ITEM_BARCODE")] public string ItemBarcode { get; set; } public string? ItemBarcode { get; set; } /// <summary> /// 客户物料编码(无条码手工录入,有条码为冗余字段) /// </summary> [SugarColumn(ColumnName = "C_ITEM_CODE")] public string CItemCode { get; set; } public string? CItemCode { get; set; } /// <summary> /// 本司物料编码(无条码手工录入,有条码为冗余字段) /// </summary> [SugarColumn(ColumnName = "ITEM_NO")] public string ItemNo { get; set; } public string? ItemNo { get; set; } /// <summary> /// 子库id @@ -55,7 +55,7 @@ /// 厂家批次 /// </summary> [SugarColumn(ColumnName = "LOT_NO")] public string LotNo { get; set; } public string? LotNo { get; set; } /// <summary> /// 数量 @@ -73,7 +73,7 @@ /// 客户编码 /// </summary> [SugarColumn(ColumnName = "CUSTOMER_NO")] public string CustomerNo { get; set; } public string? CustomerNo { get; set; } /// <summary> /// 重量 @@ -85,13 +85,13 @@ /// 子库CODE /// </summary> [SugarColumn(ColumnName = "DEPOTS_CODE")] public string DepotsCode { get; set; } public string? DepotsCode { get; set; } /// <summary> /// 货位CODE /// </summary> [SugarColumn(ColumnName = "DEPOT_SECTIONS_CODE")] public string DepotSectionsCode { get; set; } public string? DepotSectionsCode { get; set; } /// <summary> /// 检验日期 @@ -115,25 +115,25 @@ /// 工厂编号 /// </summary> [SugarColumn(ColumnName = "FACTORY")] public string Factory { get; set; } public string? Factory { get; set; } /// <summary> /// 公司编号 /// </summary> [SugarColumn(ColumnName = "COMPANY")] public string Company { get; set; } public string? Company { get; set; } /// <summary> /// 质检状态 /// </summary> [SugarColumn(ColumnName = "IQC_STATUS")] public string IqcStatus { get; set; } public string? IqcStatus { get; set; } /// <summary> /// 小车条码 /// </summary> [SugarColumn(ColumnName = "FCAR")] public string Fcar { get; set; } public string? Fcar { get; set; } /// <summary> /// 冻结提交重检,0:冻结未提交重检,1:冻结并提交重检 @@ -145,7 +145,7 @@ /// 提交重检人 /// </summary> [SugarColumn(ColumnName = "VISABLE_SUBMIT_BY")] public string VisableSubmitBy { get; set; } public string? VisableSubmitBy { get; set; } /// <summary> /// 提交重检时间 @@ -157,13 +157,13 @@ /// 产品型号 /// </summary> [SugarColumn(ColumnName = "BOARD_STYLE")] public string BoardStyle { get; set; } public string? BoardStyle { get; set; } /// <summary> /// 任务单号 /// </summary> [SugarColumn(ColumnName = "WORK_NO")] public string WorkNo { get; set; } public string? WorkNo { get; set; } /// <summary> /// 任务单行号 @@ -175,19 +175,19 @@ /// 供应商 /// </summary> [SugarColumn(ColumnName = "SUPP_NO")] public string SuppNo { get; set; } public string? SuppNo { get; set; } /// <summary> /// 生产线 /// </summary> [SugarColumn(ColumnName = "LINE_NO")] public string LineNo { get; set; } public string? LineNo { get; set; } /// <summary> /// 半成品入库单号 /// </summary> [SugarColumn(ColumnName = "BILL_NO")] public string BillNo { get; set; } public string? BillNo { get; set; } /// <summary> /// 采购订单id MES.Service/Modes/MesQaItemsDetect01.cs
MES.Service/Modes/MesQaItemsDetectDetail5.cs
MES.Service/Modes/Purdhb.cs
MES.Service/Modes/Purdka.cs
MES.Service/service/Warehouse/MesInvItemMovesManager.cs
@@ -1,6 +1,7 @@ using MES.Service.DB; using MES.Service.Dto.service; using MES.Service.Modes; using MES.Service.util; using SqlSugar; namespace MES.Service.service.Warehouse; @@ -25,6 +26,193 @@ .OrderBy(it => it.Id, OrderByType.Desc).ToList(); } public OutItemDto ScanMoveBarcode(WarehouseQuery query) { var BillTypeId = 300; var TransctionNo = 301; query.Factory = "1000"; query.Company = "1000"; if (string.IsNullOrEmpty(query.billNo)) throw new Exception("请选单据号!"); var mesInvItemStocks = Db.Queryable<MesInvItemStocks>() .Where(s => s.ItemBarcode == query.barcode && s.Quantity > 0 && s.DepotsCode != null).First(); if (mesInvItemStocks == null) throw new Exception("库存中无此条码,请核对!" + query.barcode); var mesInvItemMoves = Db.Queryable<MesInvItemMoves>() .Where(d => d.TransactionNo == TransctionNo && SqlFunc.IsNull(d.Status, 0) == 1).First(); if (mesInvItemMoves == null) throw new Exception("出库单 " + query.billNo + "不存在,请确认!"); var count = Db.Queryable<MesInvItemMoves, MesInvItemMovesCDetails>( (a, b) => new JoinQueryInfos(JoinType.Inner, a.Id == b.ItemMoveId)) .Where((a, b) => b.ItemBarcode == query.barcode && a.TransactionNo == TransctionNo && SqlFunc.IsNull(a.Status, 0) == 0).Count(); if (count > 0) throw new Exception("条码重复扫描,请核对!"); count = Db.Queryable<MesInvItemMoves, MesInvItemMovesCDetails>((a, b) => new JoinQueryInfos(JoinType.Inner, a.Id == b.ItemMoveId)) .Where((a, b) => b.ItemBarcode == query.barcode && a.TransactionNo == TransctionNo && SqlFunc.IsNull(b.MoveOk, 0) == 0).Count(); if (count > 0) throw new Exception("条码重复扫描,请核对!"); if (mesInvItemMoves.FromDepotsCode != mesInvItemStocks.DepotsCode) throw new Exception("条码现存仓库与申请出货仓库不一致,请核对!"); var quantity = Db.Queryable<MesInvItemOutItems>() .Where(b => b.ItemNo == mesInvItemStocks.ItemNo && b.ItemOutId == mesInvItemMoves.Id) .Sum(b => b.Quantity); if (quantity == null) throw new Exception("扫码物料非本次申请物料,请核对!" + query.barcode); var sum = Db.Queryable<MesInvItemMovesCDetails>() .Where(b => b.ItemNo == mesInvItemStocks.ItemNo && b.ItemMoveId == mesInvItemMoves.Id) .Sum(b => b.Quantity) ?? 0; var sumqty = sum + (mesInvItemStocks.Quantity ?? 0); if (sumqty > quantity) throw new Exception( "已扫条码数量或本次扫码数量:" + sumqty + " 大于申请数量:" + quantity + ",请核对!"); List<InventoryItem> scanOutShowDb = null; UseTransaction(db => { SaveMesInvItemMovesCDetails(db, query, mesInvItemMoves, mesInvItemStocks); // Insert into mes_inv_business2 SaveMesInvBusiness2(db, query, BillTypeId, TransctionNo, mesInvItemStocks, mesInvItemMoves); if (TransctionNo == 303) db.Updateable<MesInvItemStocks>() .SetColumns(s => s.DepotSectionsCode == mesInvItemMoves.InvDepotsCode) .SetColumns(s => s.DepotsCode == mesInvItemMoves.InvDepotsCode) .Where(s => s.Id == mesInvItemStocks.Id) .ExecuteCommand(); else db.Updateable<MesInvItemStocks>() .SetColumns(s => s.DepotSectionsCode == null) .SetColumns(s => s.DepotsCode == null) .Where(s => s.Id == mesInvItemStocks.Id) .ExecuteCommand(); scanOutShowDb = ScanOutShowDb(query); if (CollectionUtil.IsNullOrEmpty(scanOutShowDb)) db.Updateable<MesInvItemMoves>() .SetColumns(s => s.Status == 1) .SetColumns(s => s.Checkdate == DateTime.Now) .SetColumns(s => s.Checkuser == query.userName) .Where(s => s.BillNo == query.billNo).ExecuteCommand(); return 1; }); var itemDto = new OutItemDto(); itemDto.SumItem = scanOutShowDb; if (TransctionNo == 201) itemDto.Quantity = mesInvItemStocks.Quantity; itemDto.ItemNo = mesInvItemStocks.ItemNo; return itemDto; } private void SaveMesInvBusiness2(SqlSugarScope Db, WarehouseQuery query, int BillTypeId, int TransctionNo, MesInvItemStocks mesInvItemStocks, MesInvItemMoves mesInvItemMoves) { var executeCommand = Db.Insertable(new MesInvBusiness2 { Status = 1, BillTypeId = BillTypeId, TransactionCode = TransctionNo.ToString(), BusinessType = 1, ItemBarcode = query.barcode, ItemNo = mesInvItemStocks.ItemNo, LotNo = mesInvItemStocks.LotNo, EpFlag = 1, Quantity = mesInvItemStocks.Quantity, FromInvDepotsCode = mesInvItemStocks.DepotsCode, FromInvDepotSectionsCode = mesInvItemStocks.DepotSectionsCode, ToInvDepotsCode = TransctionNo == 303 ? mesInvItemMoves.InvDepotsCode : null, ToInvDepotSectionsCode = TransctionNo == 303 ? mesInvItemMoves.InvDepotsCode : null, CreateBy = query.userName, CreateDate = DateTime.Now, LastupdateBy = query.userName, LastupdateDate = DateTime.Now, Factory = query.Factory, Company = query.Company, TaskNo = mesInvItemStocks.TaskNo, BillNo = query.billNo, WorkNo = mesInvItemStocks.WorkNo, WorkLine = mesInvItemStocks.WorkLine, SuppNo = mesInvItemStocks.SuppNo }).ExecuteCommand(); if (executeCommand <= 0) throw new Exception("写入MesInvBusiness2表失败"); } private void SaveMesInvItemMovesCDetails(SqlSugarScope Db, WarehouseQuery query, MesInvItemMoves mesInvItemMoves, MesInvItemStocks mesInvItemStocks) { var executeCommand = Db.Insertable(new MesInvItemMovesCDetails { ItemMoveId = mesInvItemMoves.Id, ItemBarcode = query.barcode, CItemCode = mesInvItemStocks.CItemCode, ItemNo = mesInvItemStocks.ItemNo, LotNo = mesInvItemStocks.LotNo, Quantity = mesInvItemStocks.Quantity, EpFlag = mesInvItemStocks.EpFlag, CreateBy = query.userName, CreateDate = DateTime.Now, LastupdateBy = query.userName, LastupdateDate = DateTime.Now, CustNo = mesInvItemStocks.CustomerNo, TaskNo = mesInvItemStocks.TaskNo, FromDepotsCode = mesInvItemStocks.DepotsCode, FromDepotSectionsCode = mesInvItemStocks.DepotSectionsCode, Factory = mesInvItemStocks.Factory, Company = mesInvItemStocks.Company, IqcStatus = mesInvItemStocks.IqcStatus, Fcar = mesInvItemStocks.Fcar, IndepDate = mesInvItemStocks.IndepDate, VisableSubmit = mesInvItemStocks.VisableSubmit, VisableSubmitBy = mesInvItemStocks.VisableSubmitBy, VisableSubmitDate = mesInvItemStocks.VisableSubmitDate, BoardStyle = mesInvItemStocks.BoardStyle, WorkNo = mesInvItemStocks.WorkNo, WorkLine = mesInvItemStocks.WorkLine, SuppNo = mesInvItemStocks.SuppNo }).ExecuteCommand(); if (executeCommand <= 0) throw new Exception("写入MesInvItemMovesCDetails表失败"); } //scan_out_show_DB public List<InventoryItem> ScanOutShowDb(WarehouseQuery query) { @@ -33,6 +221,8 @@ query.Factory = "1000"; query.Company = "1000"; if (string.IsNullOrEmpty(query.billNo)) throw new Exception("请选单据号!"); var sql = string.Format( "select f_get_sections_code({0}, {1}, b.item_no) sections_code , s.erp_item_no , S.ITEM_MODEL , to_char(nvl(b.quantity, 0) - nvl(quantity_ok, 0), 'FM9999999990.00') flist from mes_inv_item_moves a join mes_inv_item_out_items b on b.item_out_id = a.id join mes_items s on b.item_no = s.item_no left join (select ITEM_MOVE_ID, item_no, sum(quantity) quantity_ok from MES_INV_ITEM_MOVES_C_DETAILS group by ITEM_MOVE_ID, item_no) c on c.ITEM_MOVE_ID = a.id and b.item_no = c.item_no where 1 = 1 and a.bill_type_id = {2} and a.transaction_no = {3} and a.bill_no = {4} and nvl(b.quantity, 0) - nvl(quantity_ok, 0) > 0 and rownum < 500 AND A.STATUS = 1 order by f_get_sections_code({0}, {1}, b.item_no), s.erp_item_no ", query.Factory, query.Company, BillTypeId, TransctionNo, MES.Service/util/CollectionUtil.cs
@@ -8,7 +8,7 @@ */ public static bool IsNullOrEmpty<T>(List<T> list) { return list == null || !list.Any(); return list == null || list.Count == 0; } /** MESApplication/Controllers/Warehouse/MesInvItemMovesController.cs
@@ -13,6 +13,27 @@ { private readonly MesInvItemMovesManager m = new(); //ScanMoveBarcode [HttpPost("ScanMoveBarcode")] public ResponseResult ScanMoveBarcode(WarehouseQuery query) { try { dynamic resultInfos = new ExpandoObject(); resultInfos.tbBillList = m.ScanMoveBarcode(query); return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } // GetBillNo [HttpPost("GetBillNo")] public ResponseResult GetBillNo(WarehouseQuery query)