服务端的TigerApi 框架,基于.NET6 2024 版本
Rodney Chen
2024-11-20 e98b23d77d1b2e5271bbe3497ad16657001d2457
Tiger.Business.MES/Common/WorkBatch.cs
@@ -601,29 +601,31 @@
            var batchs = wipList.Where(q => !q.BATCH_NO.IsNullOrEmpty()).GroupBy(q => new { q.BATCH_NO }).Select(g => new { 
                g.Key.BATCH_NO, 
                Qty = g.Count(),
                FinishQty = g.Count(q => q.STATUS == MES_WIP_DATA.STATUSs.Finished.GetValue()),
                OutQty = g.Count(q => MES_WIP_DATA.STATUSs.Output.GetValue() <= q.STATUS && q.STATUS < MES_WIP_DATA.STATUSs.InStorage.GetValue()),
            });
            var db = Biz.Db;
            var dbTran = db.UseTran(() =>
            {
                //BIZ_MES_WO
                wo.INPUT_QTY -= wipList.Count;
                wo.OUTPUT_QTY -= wipList.Count(q => q.STATUS == MES_WIP_DATA.STATUSs.Finished.GetValue());
                wo.OUTPUT_QTY -= wipList.Count(q => MES_WIP_DATA.STATUSs.Output.GetValue() <= q.STATUS && q.STATUS < MES_WIP_DATA.STATUSs.InStorage.GetValue());
                wo.SCRAP_QTY += wipList.Count;
                db.Updateable(wo, user).UpdateColumns(q => new { q.INPUT_QTY, q.OUTPUT_QTY, q.SCRAP_QTY, q.UPDATE_USER, q.UPDATE_TIME }).ExecuteCommand();
                wo.STATUS = wo.STATUS.GetEnum<BIZ_MES_WO.STATUSs>() == BIZ_MES_WO.STATUSs.Closed ? BIZ_MES_WO.STATUSs.Working.GetValue() : wo.STATUS;
                db.Updateable(wo, user).UpdateColumns(q => new { q.INPUT_QTY, q.OUTPUT_QTY, q.SCRAP_QTY, q.UPDATE_USER, q.UPDATE_TIME, q.STATUS }).ExecuteCommand();
                //BIZ_MES_WO_BATCH
                foreach (var batch in batchs)
                var wobatchs = Biz.Db.Queryable<BIZ_MES_WO_BATCH>().Where(q => batchs.Select(x => x.BATCH_NO).Contains(q.BATCH_NO)).ToList();
                foreach (var batch in wobatchs)
                {
                    db.Updateable<BIZ_MES_WO_BATCH>(user)
                         .SetColumns(q => q.INPUT_QTY == q.INPUT_QTY - batch.Qty)
                         .SetColumns(q => q.OUTPUT_QTY == q.OUTPUT_QTY - batch.FinishQty)
                         .SetColumns(q => q.SCRAP_QTY == q.SCRAP_QTY + batch.Qty)
                         .Where(q => q.BATCH_NO == q.BATCH_NO)
                         .ExecuteCommand();
                    batch.INPUT_QTY -= batchs.Where(q=>q.BATCH_NO == batch.BATCH_NO).First().Qty;
                    batch.OUTPUT_QTY -= batchs.Where(q => q.BATCH_NO == batch.BATCH_NO).First().OutQty;
                    batch.SCRAP_QTY += batchs.Where(q => q.BATCH_NO == batch.BATCH_NO).First().Qty;
                    batch.STATUS = batch.STATUS.GetEnum<BIZ_MES_WO_BATCH.STATUSs>() == BIZ_MES_WO_BATCH.STATUSs.Closed ? BIZ_MES_WO_BATCH.STATUSs.Working.GetValue() : batch.STATUS;
                }
                db.Updateable(wobatchs, user).UpdateColumns(q => new { q.INPUT_QTY, q.OUTPUT_QTY, q.SCRAP_QTY, q.UPDATE_USER, q.UPDATE_TIME, q.STATUS }).ExecuteCommand();
                //BIZ_MES_WO_SN
                db.Updateable<BIZ_MES_WO_SN>(user)
                            .SetColumns(q => q.STATUS == BIZ_MES_WO_SN.STATUSs.Offline.GetValue())
                            .SetColumns(q => q.TRAY_SN == null).SetColumns(q => q.OUTER_SN == null)
                            .Where(q => q.WORK_ORDER == wo.ORDER_NO && wipIDs.Contains(q.WIP_ID))
                            .ExecuteCommand();
                //MES_WIP_DATA & MES_WIP_HIS
@@ -631,6 +633,8 @@
                foreach (var wipSN in wipList.Where(q => q.STATUS != MES_WIP_DATA.STATUSs.Offline.GetValue()))
                {
                    wipSN.STATUS = MES_WIP_DATA.STATUSs.Offline.GetValue();
                    wipSN.TRAY_SN = wipSN.INNER_SN = wipSN.CARTON_SN = wipSN.PALLET_SN = wipSN.SHIPPING_ORDER = null;
                    wipSN.FINISHED_FLAG = wipSN.HOLD_FLAG = "N";
                    wipSN.UNBIND_FLAG = "Y";
                    wipSN.NODE_ID = "";
                    wipSN.NODE_NAME = "下线退库";
@@ -659,7 +663,7 @@
                    }
                }
                while (curpkg.Any());
                db.Updateable(curpkg, user).ExecuteCommand();
                db.Updateable(pkgs, user).ExecuteCommand();
                //MES_WIP_DFT,在上仓库装配和维修之前,先把不良记录标记为已处理
                db.Updateable<MES_WIP_DFT>(user)
                           .SetColumns(q => q.STATUS == MES_WIP_DFT.STATUSs.Resolved.GetValue())
@@ -671,7 +675,18 @@
                //抛出异常
                throw dbTran.ErrorException;
            }
            //更新工单池中的工单条码表数据的状态
            foreach (var item in WoContext.WoBatchDic)
            {
                if (item.Value.WO.ORDER_NO == wo.ORDER_NO)
                {
                    foreach (var woSn in item.Value.WoSNs.Where(q => wipIDs.Contains(q.WIP_ID)))
                    {
                        woSn.STATUS = BIZ_MES_WO_SN.STATUSs.Offline.GetValue();
                    }
                    item.Value.Update();
                }
            }
            return action;
        }
        #endregion