南骏 池
6 天以前 4910c0fa81d93635e19a57c073c3a62c76053320
service/Warehouse/MesItemQtrkManager.cs
@@ -12,10 +12,17 @@
{
    public List<string> GetQtckList()
    {
        return Db.Queryable<MesItemQtrk>()
            .Where(x => (x.Qt015 ?? 0) == 1 && (x.Qt014 ?? 0) == 0)
            .Select(x => x.Qtck)
            .ToList();
        //return Db.Queryable<MesItemQtrk>()
        //    .Where(x => (x.Qt015 ?? 0) == 1 && (x.Qt014 ?? 0) == 0)
        //    .Select(x => x.Qtck)
        //    .ToList();
        const string sql = @"SELECT qtck
                        FROM MES_ITEM_QTRK
                        WHERE  QT015 = 1 AND QT028 = 1 AND QT032 = 1
                          AND QT014 = 0  ";
        return Db.Ado.SqlQuery<string>(sql);
    }
    public ProductionPickDto GetQtckDetailList(WarehouseQuery query)
@@ -26,14 +33,22 @@
        var mesInvItemOuts = base.GetSingle(it => it.Qtck == query.billNo);
        if (mesInvItemOuts == null) throw new Exception("其他入库申请单不存在");
        var sql = string.Format(@"SELECT c.item_no ItemNo,c.item_name ItemName,c.item_model ItemModel,A.qd007 FQty,A.qd008 SQty,A.qd007 - A.qd008 DSQty
fROM MES_ITEM_QTRR_DETAIL A
         LEFT JOIN MES_ITEM_QTRK B ON A.qtrkGuid = B.guid
         LEFT JOIN MES_ITEMS C ON A.itemId = C.item_id
WHERE B.qtck = '{0}'", query.billNo);
        var sql = @"SELECT c.item_no ItemNo,c.item_name ItemName,c.item_model ItemModel,
                    ISNULL(A.qd007,0) FQty,ISNULL(A.qd008,0) SQty,ISNULL(A.qd007,0) - ISNULL(A.qd008,0) DSQty
                    FROM MES_ITEM_QTRR_DETAIL A
                    LEFT JOIN MES_ITEM_QTRK B ON A.qtrkGuid = B.guid
                    LEFT JOIN MES_ITEMS C ON A.itemId = C.item_id
                    WHERE B.qtck = @billNo AND QT015 = 1 AND QT028 = 1 AND QT032 = 1  ";
        //AND QT014 = 0
        var womdabs = Db.Ado.SqlQuery<ItemDetailModel>(sql);
        var sqlParams = new List<SugarParameter> {
            new("@billNo", query.billNo)
        };
        var womdabs = Db.Ado.SqlQuery<ItemDetailModel>(sql, sqlParams);
        if (womdabs.Count < 1)
            throw new Exception($"该其他入库申请单 {query.billNo} 未全部审核或已完结,请确认!");
        var DS_list = womdabs.Where(s => s.DSQty > 0).ToList();
@@ -50,7 +65,7 @@
        return dto;
    }
    public string ScanInDepotsQT(WarehouseQuery query)
    public dynamic ScanInDepotsQT(WarehouseQuery query)
    {
      var sectionCode = query.sectionCode;
        var billNo = query.billNo;
@@ -58,31 +73,24 @@
        // 1. 验证库位条码是否为空
        if (string.IsNullOrEmpty(sectionCode)) throw new Exception("请扫库位条码!");
        // 2. 查询库位对应的仓库编码
        var depotId = Db.Queryable<MesDepotSections, MesDepots>(
                (a, b) => new JoinQueryInfos(
                    JoinType.Inner, a.DepotGuid == b.Guid))
            .Where((a, b) => a.DepotSectionCode == sectionCode)
            .Select((a, b) => b.DepotId)
            .First();
        var sqlParams = new List<SugarParameter> { new("@sectionCode", sectionCode) };
        if (depotId == null)
        var sql2 = @"        SELECT TOP 1  b.depot_code,
                      b.depot_id,
                     B.FSubsidiary,
                     B.depot_name
        FROM MES_DEPOT_SECTIONS a
                 INNER JOIN
             MES_DEPOTS b ON a.depot_guid = b.Guid
        WHERE a.depot_section_code = @sectionCode;";
        var depotInfo = Db.Ado.SqlQuery<dynamic>(sql2, sqlParams).First();
        if (depotInfo is  null)
            throw new Exception($"库位编码 {sectionCode} 不存在,请确认!");
        // 3. 查询申请单对应的仓库
        var qtrk = Db.Queryable<MesItemQtrk>()
            .Where(x => x.Qtck == billNo)
            .Select(x => x.Qt008)
            .First();
        if (qtrk == null) throw new Exception($"库位编码 {sectionCode} 不存在,请确认!");
        // 4. 验证库位是否属于申请仓库
        if (depotId != Convert.ToInt32(qtrk))
            throw new Exception($"扫码库位 {sectionCode} 不属于申请仓库!");
        // 5. 返回成功信息
        return $"仓库:{qtrk} 库位:{sectionCode}";
        return depotInfo;
    }
    public (WarehouseQuery form, List<MesItemQtrrDetail> item)
@@ -113,6 +121,21 @@
        var c_depot_code = depotInfo.DepotCode;
        var c_depot_id = depotInfo.DepotId;
        var sqlParams = new List<SugarParameter> { new("@barcode", p_item_barcode), new("@billNo", p_bill_no) };
        var sql1 = @"   SELECT TOP 1 A.rkCkId
FROM MES_QA_ITEMS_DETECT_01 A
         LEFT JOIN MES_INV_ITEM_BARCODES B ON A.item_id = B.ITEM_ID
WHERE order_type = '其它入库检'
  AND A.lot_no = @billNo
  AND ITEM_BARCODE = @barcode   ";
        var appDepotInfo = Db.Ado.SqlQuery<dynamic>(sql1, sqlParams).First();
        if(appDepotInfo.rkCkId != c_depot_id)
            throw new Exception($"该 {p_section_code} 对应的仓库 与 检验判定的入库仓库不一致,请确认!");
        var mesDepost = Db.Queryable<MesDepots>()
                .Where(s => s.DepotId == c_depot_id).First();
@@ -150,9 +173,26 @@
        if (qtrk == null) throw new Exception("其他入库申请单不存在!");
        //  验证库位是否属于申请仓库
        if (c_depot_id != Convert.ToInt32(qtrk.Qt008))
            throw new Exception($"扫码库位 {p_section_code} 不属于申请仓库!");
        var sql = @"SELECT c.item_no ItemNo,c.item_name ItemName,c.item_model ItemModel,
                    ISNULL(A.qd007,0) FQty,ISNULL(A.qd008,0) SQty,ISNULL(A.qd007,0) - ISNULL(A.qd008,0) DSQty
                    FROM MES_ITEM_QTRR_DETAIL A
                    LEFT JOIN MES_ITEM_QTRK B ON A.qtrkGuid = B.guid
                    LEFT JOIN MES_ITEMS C ON A.itemId = C.item_id
                    WHERE B.qtck = @billNo AND QT015 = 1 AND QT028 = 1 AND QT032 = 1 AND QT014 = 0 ";
        //AND QT014 = 0
        var sqlParams1 = new List<SugarParameter> {
            new("@billNo", p_bill_no)
        };
        var womdabs = Db.Ado.SqlQuery<ItemDetailModel>(sql, sqlParams1);
        if (womdabs.Count < 1)
            throw new Exception($"该其他入库申请单 {query.billNo} 未全部审核或已完结,请确认!");
        ////  验证库位是否属于申请仓库
        //if (c_depot_id != Convert.ToInt32(qtrk.Qt008))
        //    throw new Exception($"扫码库位 {p_section_code} 不属于申请仓库!");
        // 6. 查询申请单明细
        var detail = Db.Queryable<MesItemQtrrDetail>()
@@ -453,6 +493,11 @@
                    .Where(x => x.Qtck == p_bill_no)
                    .ExecuteCommand();
            // 创建 插入日志
            var logService = new LogService();
            var LogMsg = "【PDA】其他入库。条码【" + query.barcode + "】数量【" + barcode.Quantity.ToString() + "】 入库单号【" + billNo + "】";
            logService.CreateLog(db, query.userName, qtrk.Guid.ToString(), "MES_ITEM_QTRK", LogMsg, qtrk.Qtck);
            if (res < 5) throw new Exception("插入或更新失败");
            return res;