| | |
| | | public WarehouseQuery SctlScanDepots(WarehouseQuery query) |
| | | { |
| | | if (query.DepotCode.IsNullOrEmpty()) |
| | | { |
| | | throw new NullReferenceException("请扫库位条码"); |
| | | } |
| | | |
| | | var warehouseQuery = Db.Queryable<MesDepotSections, MesDepots>((a, b) => |
| | | new JoinQueryInfos(JoinType.Inner, a.DepotGuid == b.Guid)) |
| | |
| | | { |
| | | DepotSectionName = a.DepotSectionName, |
| | | DepotName = b.DepotName, |
| | | DepotCode = b.DepotCode, |
| | | DepotCode = b.DepotCode |
| | | }).First(); |
| | | |
| | | if (warehouseQuery == null) |
| | | { |
| | | throw new Exception("库位编码" + query.DepotCode + " 不存在,请确认!"); |
| | | } |
| | | |
| | | return warehouseQuery; |
| | | } |
| | |
| | | var p_bill_type_id = 100; |
| | | var p_transction_no = 104; |
| | | |
| | | if (p_section_code.IsNullOrEmpty()) |
| | | { |
| | | throw new Exception("请扫库位条码!"); |
| | | } |
| | | if (p_section_code.IsNullOrEmpty()) throw new Exception("请扫库位条码!"); |
| | | |
| | | var c_depot_code = Db.Queryable<MesDepotSections, MesDepots>((a, b) => |
| | | new JoinQueryInfos(JoinType.Inner, a.DepotGuid == b.Guid)) |
| | |
| | | .Select((a, b) => b.DepotId).First(); |
| | | |
| | | if (!c_depot_code.HasValue) |
| | | { |
| | | throw new Exception("库位编码" + p_section_code + " 不存在,请确认!"); |
| | | } |
| | | |
| | | var mesDepotSections = Db.Queryable<MesDepotSections>() |
| | | .Where(a => a.DepotSectionCode == p_section_code).First(); |
| | | |
| | | if (mesDepotSections == null) |
| | | { |
| | | throw new Exception("库位编码" + p_section_code + " 不存在,请确认!"); |
| | | } |
| | | |
| | | var c_mes_depots = Db.Queryable<MesDepots>() |
| | | .Where(b => b.Guid == mesDepotSections.DepotGuid).First(); |
| | | |
| | | if (c_mes_depots == null) |
| | | { |
| | | throw new Exception("库位编码" + p_section_code + " 不存在,请确认!"); |
| | | } |
| | | |
| | | var c_num = Db.Queryable<MesInvItemIns, MesInvItemInCDetails>((a, b) => |
| | | new JoinQueryInfos(JoinType.Inner, a.Guid == b.ItemInId)) |
| | |
| | | a.TransctionNo == p_transction_no.ToString()) |
| | | .Count(); |
| | | |
| | | if (c_num > 0) |
| | | { |
| | | throw new Exception("此条码已扫入库,勿重复扫描!"); |
| | | } |
| | | if (c_num > 0) throw new Exception("此条码已扫入库,勿重复扫描!"); |
| | | |
| | | c_num = Db.Queryable<MesInvItemStocks>() |
| | | .Where(t => t.ItemBarcode == p_item_barcode).Count(); |
| | | |
| | | if (c_num > 0) |
| | | { |
| | | throw new Exception("此条码已扫入库,勿重复扫描!"); |
| | | } |
| | | if (c_num > 0) throw new Exception("此条码已扫入库,勿重复扫描!"); |
| | | |
| | | var c_mes_inv_item_barcodes = Db.Queryable<MesInvItemBarcodes>() |
| | | .Where(t => t.ItemBarcode == p_item_barcode).First(); |
| | | |
| | | if (c_mes_inv_item_barcodes == null) |
| | | { |
| | | throw new Exception("此条码不属于该退料单,请核对!"); |
| | | } |
| | | |
| | | if (c_mes_inv_item_barcodes.Memo != "生产退料") |
| | | { |
| | | throw new Exception("此条码不是生产退料条码,不可使用生产退料模块!"); |
| | | } |
| | | |
| | | var C_MES_ITEM_TBL = Db.Queryable<MesItemTbl>() |
| | | .Where(a => a.BillNo == c_mes_inv_item_barcodes.BillNo |
| | | && (a.Tbl013 ?? 0) == 1).First(); |
| | | |
| | | if (C_MES_ITEM_TBL == null) |
| | | { |
| | | throw new Exception("申请单已撤回,无法扫码!"); |
| | | } |
| | | if (C_MES_ITEM_TBL == null) throw new Exception("申请单已撤回,无法扫码!"); |
| | | |
| | | if (C_MES_ITEM_TBL.Tbl020 == 1) |
| | | { |
| | | throw new Exception("扫码完成,申请单已完结!"); |
| | | } |
| | | if (C_MES_ITEM_TBL.Tbl020 == 1) throw new Exception("扫码完成,申请单已完结!"); |
| | | |
| | | var C_MES_ITEM_TBL_DETAIL = Db.Queryable<MesItemTblDetail>() |
| | | .Where(a => a.Tlmid == C_MES_ITEM_TBL.Id |
| | |
| | | .First(); |
| | | |
| | | if (C_MES_ITEM_TBL_DETAIL == null) |
| | | { |
| | | throw new Exception("条码不属于该申请单明细,无法扫码!"); |
| | | } |
| | | |
| | | var c_quantity = c_mes_inv_item_barcodes.Quantity; |
| | | |
| | |
| | | } |
| | | |
| | | var hbdy = c_mes_inv_item_barcodes.Hbdy ?? 0; |
| | | if (hbdy == 1) |
| | | { |
| | | throw new Exception("不支持合并打印的条码:" + p_item_barcode); |
| | | } |
| | | if (hbdy == 1) throw new Exception("不支持合并打印的条码:" + p_item_barcode); |
| | | |
| | | totalResult += db.Insertable(new MesInvItemInCDetails |
| | | { |
| | |
| | | { |
| | | // 良品退料 - 更新工单表(WOMDAB)相关数量 |
| | | if (C_MES_ITEM_TBL.Tbl005 == "良品退料") |
| | | { |
| | | totalResult += Db.Updateable<Womdab>() |
| | | .SetColumns(it => new Womdab |
| | | { |
| | | Dab007 = it.Dab007 - c_mes_inv_item_barcodes.Quantity, // 减少工单数量 |
| | | Dab022 = (it.Dab022 ?? 0) + c_mes_inv_item_barcodes.Quantity, // 增加退料数量 |
| | | LpTl = (it.LpTl ?? 0) + (int)c_mes_inv_item_barcodes.Quantity, // 增加良品退料数量 |
| | | Dab020 = (it.Dab020 ?? 0) - c_mes_inv_item_barcodes.Quantity // 减少已发料数量 |
| | | }) |
| | | .Where(it => it.Dab001 == c_mes_inv_item_barcodes.WorkNo |
| | | && it.Dab002 == c_mes_inv_item_barcodes.WorkLine |
| | | && it.Dab003 == c_mes_inv_item_barcodes.ItemId.ToString()) |
| | | .ExecuteCommand(); |
| | | } |
| | | // 来料不良退料 - 更新工单表(WOMDAB)相关数量 |
| | | else if (C_MES_ITEM_TBL.Tbl005 == "来料不良退料") |
| | | { |
| | | totalResult += Db.Updateable<Womdab>() |
| | | .SetColumns(it => new Womdab |
| | | { |
| | | Dab007 = it.Dab007 - c_mes_inv_item_barcodes.Quantity, // 减少工单数量 |
| | | Dab022 = (it.Dab022 ?? 0) + c_mes_inv_item_barcodes.Quantity, // 增加退料数量 |
| | | LlBl = (it.LlBl ?? 0) + (int)c_mes_inv_item_barcodes.Quantity, // 增加来料不良数量 |
| | | Dab020 = (it.Dab020 ?? 0) - c_mes_inv_item_barcodes.Quantity // 减少已发料数量 |
| | | Dab007 = it.Dab007 - |
| | | c_mes_inv_item_barcodes.Quantity, // 减少工单数量 |
| | | Dab022 = (it.Dab022 ?? 0) + |
| | | c_mes_inv_item_barcodes.Quantity, // 增加退料数量 |
| | | LpTl = (it.LpTl ?? 0) + |
| | | (int)c_mes_inv_item_barcodes |
| | | .Quantity, // 增加良品退料数量 |
| | | Dab020 = (it.Dab020 ?? 0) - |
| | | c_mes_inv_item_barcodes.Quantity // 减少已发料数量 |
| | | }) |
| | | .Where(it => it.Dab001 == c_mes_inv_item_barcodes.WorkNo |
| | | && it.Dab002 == c_mes_inv_item_barcodes.WorkLine |
| | | && it.Dab003 == c_mes_inv_item_barcodes.ItemId.ToString()) |
| | | && it.Dab002 == c_mes_inv_item_barcodes |
| | | .WorkLine |
| | | && it.Dab003 == c_mes_inv_item_barcodes |
| | | .ItemId.ToString()) |
| | | .ExecuteCommand(); |
| | | } |
| | | // 来料不良退料 - 更新工单表(WOMDAB)相关数量 |
| | | else if (C_MES_ITEM_TBL.Tbl005 == "来料不良退料") |
| | | totalResult += Db.Updateable<Womdab>() |
| | | .SetColumns(it => new Womdab |
| | | { |
| | | Dab007 = it.Dab007 - |
| | | c_mes_inv_item_barcodes.Quantity, // 减少工单数量 |
| | | Dab022 = (it.Dab022 ?? 0) + |
| | | c_mes_inv_item_barcodes.Quantity, // 增加退料数量 |
| | | LlBl = (it.LlBl ?? 0) + |
| | | (int)c_mes_inv_item_barcodes |
| | | .Quantity, // 增加来料不良数量 |
| | | Dab020 = (it.Dab020 ?? 0) - |
| | | c_mes_inv_item_barcodes.Quantity // 减少已发料数量 |
| | | }) |
| | | .Where(it => it.Dab001 == c_mes_inv_item_barcodes.WorkNo |
| | | && it.Dab002 == c_mes_inv_item_barcodes |
| | | .WorkLine |
| | | && it.Dab003 == c_mes_inv_item_barcodes |
| | | .ItemId.ToString()) |
| | | .ExecuteCommand(); |
| | | |
| | | // 更新退料单明细表已退数量 |
| | | totalResult += Db.Updateable<MesItemTblDetail>() |
| | | .SetColumns(it => new MesItemTblDetail |
| | | { |
| | | Tld006 = (it.Tld006 ?? 0) + (int)c_mes_inv_item_barcodes.Quantity // 增加已退数量 |
| | | Tld006 = (it.Tld006 ?? 0) + |
| | | (int)c_mes_inv_item_barcodes.Quantity // 增加已退数量 |
| | | }) |
| | | .Where(it => it.Tlmid == C_MES_ITEM_TBL.Id |
| | | && it.Tld009 == c_mes_inv_item_barcodes.ItemId |
| | | && it.Tld010 == c_mes_inv_item_barcodes.WorkLine) |
| | | && it.Tld009 == c_mes_inv_item_barcodes.ItemId |
| | | && it.Tld010 == |
| | | c_mes_inv_item_barcodes.WorkLine) |
| | | .ExecuteCommand(); |
| | | } |
| | | // 作业不良退料 - 更新工单表和退料单明细表 |
| | |
| | | totalResult += Db.Updateable<Womdab>() |
| | | .SetColumns(it => new Womdab |
| | | { |
| | | Dab022 = (it.Dab022 ?? 0) + c_mes_inv_item_barcodes.Quantity, // 增加退料数量 |
| | | ZyBl = (it.ZyBl ?? 0) + (int)c_mes_inv_item_barcodes.Quantity, // 增加作业不良数量 |
| | | Dab020 = (it.Dab020 ?? 0) - c_mes_inv_item_barcodes.Quantity // 减少已发料数量 |
| | | Dab022 = (it.Dab022 ?? 0) + |
| | | c_mes_inv_item_barcodes.Quantity, // 增加退料数量 |
| | | ZyBl = (it.ZyBl ?? 0) + |
| | | (int)c_mes_inv_item_barcodes |
| | | .Quantity, // 增加作业不良数量 |
| | | Dab020 = (it.Dab020 ?? 0) - |
| | | c_mes_inv_item_barcodes.Quantity // 减少已发料数量 |
| | | }) |
| | | .Where(it => it.Dab001 == c_mes_inv_item_barcodes.WorkNo |
| | | && it.Dab002 == c_mes_inv_item_barcodes.WorkLine |
| | | && it.Dab003 == c_mes_inv_item_barcodes.ItemId.ToString()) |
| | | && it.Dab002 == |
| | | c_mes_inv_item_barcodes.WorkLine |
| | | && it.Dab003 == c_mes_inv_item_barcodes.ItemId |
| | | .ToString()) |
| | | .ExecuteCommand(); |
| | | |
| | | // 更新退料单明细表已退数量 |
| | | totalResult += Db.Updateable<MesItemTblDetail>() |
| | | .SetColumns(it => new MesItemTblDetail |
| | | { |
| | | Tld006 = (it.Tld006 ?? 0) + (int)c_mes_inv_item_barcodes.Quantity // 增加已退数量 |
| | | Tld006 = (it.Tld006 ?? 0) + |
| | | (int)c_mes_inv_item_barcodes.Quantity // 增加已退数量 |
| | | }) |
| | | .Where(it => it.Tlmid == C_MES_ITEM_TBL.Id |
| | | && it.Tld009 == c_mes_inv_item_barcodes.ItemId |
| | | && it.Tld010 == c_mes_inv_item_barcodes.WorkLine) |
| | | && it.Tld009 == c_mes_inv_item_barcodes.ItemId |
| | | && it.Tld010 == |
| | | c_mes_inv_item_barcodes.WorkLine) |
| | | .ExecuteCommand(); |
| | | } |
| | | |
| | | // 如果待退数量等于本次退料数量,则更新明细完成状态 |
| | | if ((C_MES_ITEM_TBL_DETAIL.Tld005 ?? 0) - (C_MES_ITEM_TBL_DETAIL.Tld006 ?? 0) == c_mes_inv_item_barcodes.Quantity) |
| | | { |
| | | if ((C_MES_ITEM_TBL_DETAIL.Tld005 ?? 0) - |
| | | (C_MES_ITEM_TBL_DETAIL.Tld006 ?? 0) == |
| | | c_mes_inv_item_barcodes.Quantity) |
| | | totalResult += Db.Updateable<MesItemTblDetail>() |
| | | .SetColumns(it => new MesItemTblDetail { Tld008 = 1 }) // 设置完成标志 |
| | | .SetColumns(it => new MesItemTblDetail |
| | | { Tld008 = 1 }) // 设置完成标志 |
| | | .Where(it => it.Tlid == C_MES_ITEM_TBL_DETAIL.Tlid) |
| | | .ExecuteCommand(); |
| | | } |
| | | |
| | | // 检查退料单是否所有明细都已完成 |
| | | var remainingCount = Db.Queryable<MesItemTbl, MesItemTblDetail>((a, b) => |
| | | new JoinQueryInfos(JoinType.Left, a.Id == b.Tlmid)) |
| | | .Where((a, b) => a.BillNo == p_bill_no && (b.Tld005 ?? 0) - (b.Tld006 ?? 0) > 0) |
| | | var remainingCount = Db.Queryable<MesItemTbl, MesItemTblDetail>( |
| | | (a, b) => |
| | | new JoinQueryInfos(JoinType.Left, a.Id == b.Tlmid)) |
| | | .Where((a, b) => |
| | | a.BillNo == p_bill_no && |
| | | (b.Tld005 ?? 0) - (b.Tld006 ?? 0) > 0) |
| | | .Count(); |
| | | |
| | | // 如果所有明细都已完成,则更新退料单状态为已完成 |
| | | if (remainingCount < 1) |
| | | { |
| | | totalResult += Db.Updateable<MesItemTbl>() |
| | | .SetColumns(it => it.Tbl020 == 1 ) // 设置完成标志 |
| | | .SetColumns(it => it.Tbl020 == 1) // 设置完成标志 |
| | | .Where(it => it.BillNo == p_bill_no) |
| | | .ExecuteCommand(); |
| | | } |
| | | |
| | | if (totalResult < 3) |
| | | { |
| | | throw new Exception("插入失败"); |
| | | } |
| | | |
| | | if (totalResult < 3) throw new Exception("插入失败"); |
| | | |
| | | return totalResult; |
| | | }); |
| | | |
| | | |
| | | // 设置返回结果 |
| | | // c_result = $"001[,{c_mes_inv_item_barcodes.ItemNo},{c_quantity},扫码成功!,参考库位@物料@待退数量{c_in_field_valT}"; |
| | | |