| | |
| | | using NewPdaSqlServer.DB; |
| | | using NewPdaSqlServer.Dto.service; |
| | | using NewPdaSqlServer.entity; |
| | | using NewPdaSqlServer.service.@base; |
| | | using NewPdaSqlServer.util; |
| | | using SqlSugar; |
| | | using System.Text; |
| | | |
| | | namespace NewPdaSqlServer.service.Warehouse; |
| | | |
| | |
| | | var p_transction_no = 601; |
| | | |
| | | // 检查库位代码是否为空 |
| | | if (string.IsNullOrEmpty(p_section_code)) |
| | | throw new Exception("002[请扫库位条码!"); |
| | | // if (string.IsNullOrEmpty(p_section_code)) |
| | | // throw new Exception("002[请扫库位条码!"); |
| | | |
| | | // 查询库区库位信息 |
| | | var depotSection = Db.Queryable<MesDepotSections, MesDepots>((a, b) => |
| | |
| | | )) |
| | | .Where((a, b) => a.DepotSectionCode == p_section_code) |
| | | .Select((a, b) => new |
| | | { a.DepotSectionName, b.DepotCode, b.DepotName, b.DepotId }) |
| | | { a.DepotSectionName, b.DepotCode, b.DepotName, b.DepotId,b.FSubsidiary }) |
| | | .Single(); |
| | | |
| | | // 如果库位代码不存在,则返回错误信息 |
| | | if (depotSection == null) |
| | | throw new Exception("库位编码 " + p_section_code + " 不存在,请确认!"); |
| | | // if (depotSection == null) |
| | | // throw new Exception("库位编码 " + p_section_code + " 不存在,请确认!"); |
| | | |
| | | // 检查是否已经收货 |
| | | var c_num = Db.Queryable<MesInvItemIns, MesInvItemInCDetails>((a, b) => |
| | | new JoinQueryInfos( |
| | | JoinType.Inner, a.Guid == b.ItemInId |
| | | )) |
| | | .Where((a, b) => b.ItemBarcode == p_item_barcode) |
| | | .Count(); |
| | | // var c_num = Db.Queryable<MesInvItemIns, MesInvItemInCDetails>((a, b) => |
| | | // new JoinQueryInfos( |
| | | // JoinType.Inner, a.Guid == b.ItemInId |
| | | // )) |
| | | // .Where((a, b) => b.ItemBarcode == p_item_barcode) |
| | | // .Count(); |
| | | |
| | | if (c_num > 0) throw new Exception("002[条码重复扫描,请核对!"); |
| | | // if (c_num > 0) throw new Exception("002[条码重复扫描,请核对!"); |
| | | |
| | | // 查询条码信息 |
| | | c_num = Db.Queryable<MesInvItemStocks>() |
| | | .Where(t => t.ItemBarcode == p_item_barcode) |
| | | .Count(); |
| | | // c_num = Db.Queryable<MesInvItemStocks>() |
| | | // .Where(t => t.ItemBarcode == p_item_barcode) |
| | | // .Count(); |
| | | |
| | | if (c_num > 0) throw new Exception("002[条码已在库存中,请核对!"); |
| | | // if (c_num > 0) throw new Exception("002[条码已在库存中,请核对!"); |
| | | |
| | | // 查询条码详细信息 |
| | | var c_mes_inv_item_barcodes = Db.Queryable<MesInvItemBarcodes>() |
| | | .Where(t => t.ItemBarcode == p_item_barcode) |
| | | .Single(); |
| | | |
| | | if (c_mes_inv_item_barcodes == null) |
| | | throw new Exception("002[条码不存在,请核对!"); |
| | | // if (c_mes_inv_item_barcodes == null) |
| | | // throw new Exception("002[条码不存在,请核对!"); |
| | | |
| | | if (c_mes_inv_item_barcodes.ComeFlg != 0) |
| | | if (c_mes_inv_item_barcodes.Memo != "初期物料") |
| | | throw new Exception("002[条码不是期初条码,无法用期初入库!"); |
| | | |
| | | var wmsManager = new WmsBaseMangeer(); |
| | | // 新增入库校验(调用存储过程) |
| | | var checkResult = wmsManager.pdaInvJY( |
| | | db: Db, |
| | | edtUserNo: query.userName, |
| | | barcode: p_item_barcode, |
| | | sectionCode: p_section_code, |
| | | stockId: depotSection.DepotId.ToString(), |
| | | stockOrgId: depotSection.FSubsidiary, |
| | | billNo: "", // 根据实际单据号传值 |
| | | transactionNo: "601" // 事务类型与存储过程匹配 |
| | | ); |
| | | |
| | | if ( Convert.ToInt32(checkResult.result) < 1) |
| | | throw new Exception($"入库校验失败:{checkResult.strMsg}"); |
| | | |
| | | UseTransaction(db => |
| | | { |
| | |
| | | ? "1" |
| | | : "0", |
| | | CbillNo = c_mes_inv_item_barcodes.BillNo, |
| | | Fstatus = 0 |
| | | Fstatus = 0, |
| | | ReceiveOrgId = depotSection.FSubsidiary, |
| | | InType = "期初入库", |
| | | }; |
| | | db.Insertable(newMesInvItemIns) |
| | | .IgnoreColumns(true) |
| | |
| | | UrgentFlag = c_mes_inv_item_barcodes.UrgentFlag, |
| | | BoardStyle = c_mes_inv_item_barcodes.BoardStyle, |
| | | TaskNo = c_mes_inv_item_barcodes.TaskNo, |
| | | ItemId = c_mes_inv_item_barcodes.ItemId |
| | | ItemId = c_mes_inv_item_barcodes.ItemId, |
| | | ReceiveOrgId = depotSection.FSubsidiary, |
| | | }).IgnoreColumns(true).ExecuteCommand(); |
| | | |
| | | |
| | |
| | | WorkLine = c_mes_inv_item_barcodes.WorkLine, |
| | | // ItemUnit = c_mes_inv_item_barcodes.Unit, |
| | | SuppNo = c_mes_inv_item_barcodes.SuppNo, |
| | | ItemId = c_mes_inv_item_barcodes.ItemId |
| | | ItemId = c_mes_inv_item_barcodes.ItemId, |
| | | IndepUserCode = c_user, |
| | | StockOrgId = depotSection.FSubsidiary, |
| | | // Fsubsidiary = c_organize |
| | | }).IgnoreColumns(true).ExecuteCommand(); |
| | | |
| | |
| | | // 返回成功信息 |
| | | return query; |
| | | } |
| | | |
| | | |
| | | public dynamic GetDepoptsInfo(dynamic unity) |
| | | { |
| | | |
| | | //// 使用参数化查询防止SQL注入 |
| | | var sqlParams = new List<SugarParameter> { new("@sectionCode", unity.sectionCode) }; |
| | | |
| | | var sql2 = @" SELECT TOP 1 B.depot_code + '('+B.depot_name+')' depotsInfo, |
| | | B.FSubsidiary, |
| | | C.FNumber + '('+C.NAME+')' orgInfo |
| | | FROM MES_DEPOT_SECTIONS A |
| | | LEFT JOIN |
| | | MES_DEPOTS B ON A.depot_guid = B.Guid |
| | | LEFT JOIN SYS_ORGANIZATION C ON C.FID = B.FSubsidiary |
| | | WHERE a.depot_section_code = @sectionCode;"; |
| | | |
| | | var XcslItem = Db.Ado.SqlQuery<dynamic>(sql2, sqlParams).FirstOrDefault(); |
| | | |
| | | // 检查结果有效性 |
| | | if (XcslItem == null) |
| | | { |
| | | throw new Exception($"库位 [{unity.sectionCode}] 不存在,或所属仓库状态异常(可能被禁用或删除)。"); |
| | | } |
| | | |
| | | return XcslItem; // 返回第一行数据,如果没有则返回 null |
| | | } |
| | | |
| | | |
| | | |
| | | public dynamic GetItemsList(dynamic unity) |
| | | { |
| | | var sqlParams = new List<SugarParameter> { new("@orgId", unity.orgId) }; |
| | | |
| | | var sql2 = new StringBuilder(@" |
| | | SELECT TOP 20 item_id, item_no, item_name, item_model,item_no+'---'+item_name AS wlInfo |
| | | FROM MES_ITEMS |
| | | WHERE FSubsidiary = @orgId"); |
| | | |
| | | if (!string.IsNullOrWhiteSpace(unity.selectKey?.ToString())) |
| | | { |
| | | sqlParams.Add(new("@selectKey", unity.selectKey)); |
| | | sql2.Append(@" |
| | | AND (item_no LIKE '%' + @selectKey + '%' |
| | | OR item_name LIKE '%' + @selectKey + '%' |
| | | OR item_model LIKE '%' + @selectKey + '%')"); |
| | | } |
| | | |
| | | var XcslItem = Db.Ado.SqlQuery<dynamic>(sql2.ToString(), sqlParams); |
| | | |
| | | if (XcslItem == null) |
| | | { |
| | | throw new Exception("该条件下无对应物料信息,请重新输入!"); |
| | | } |
| | | |
| | | return XcslItem; |
| | | } |
| | | } |