schangxiang@126.com
2025-09-02 cf5ef52a94c25e2ce92d0a0b7ebca62d81852873
wcs/yunneiWCS/yunneiWCS/ExtendFunction/MyExtend.cs
@@ -20,6 +20,36 @@
    public class MyExtend
    {
        /// <summary>
        /// 消息时间字符串
        /// </summary>
        /// <returns></returns>
        public static string MsgTimeStr()
        {
            return "[消息时间:" + DateTimeHelper.ConvertToStringForOnlyShowTime(DateTime.Now) + "]";
        }
        /// <summary>
        /// 是否是 物料库存的转移
        /// </summary>
        /// <param name="taskType"></param>
        /// <returns></returns>
        public static bool IsMaterilStockMove(taskType currentTaskType)
        {
            if (currentTaskType == taskType.空库位
                || currentTaskType == taskType.呼叫空托
                 || currentTaskType == taskType.空托回库
                  || currentTaskType == taskType.空托下线入库
                   || currentTaskType == taskType.空托手动入库
                    || currentTaskType == taskType.空托人工出库
                     || currentTaskType == taskType.旁路工位缸体空托回库
                  )
            {
                return false;
            }
            return true;
        }
        public static string HandlerNoIssuedTaskFor旁路工位缸体空托或余料回库(dbmodel mod, string convPlace, task item, string[] agvSendStatus)
        {
            //注意:这个middlePlace是工人自己选的!
@@ -476,6 +506,7 @@
                                throw new Exception("入库任务,目标站点找不到,toPlace:" + finishTask.toPlace);
                            }
                            OutInStockRecordHandler.AddOutInStockRecord(mod, OutInFlag.入库, finishTask.sourcePlace, finishTask.toPlace, finishTask, "入库类型的任务");
                            OutInStockRecord_V2_MesHandler.AddRecord(mod, OutInFlag.入库, finishTask.toPlace, finishTask, "入库类型的任务", currentTaskType);//堆垛机任务完成后的入库
                            #endregion
                            break;
                        case taskType.缸体下线:
@@ -566,6 +597,7 @@
                                #endregion
                                OutInStockRecordHandler.AddOutInStockRecord(mod, OutInFlag.入库, finishTask.sourcePlace, finishTask.toPlace, finishTask, "入库类型的任务");
                                OutInStockRecord_V2_MesHandler.AddRecord(mod, OutInFlag.入库, finishTask.toPlace, finishTask, "入库类型的任务", currentTaskType);//堆垛机任务完成后的入库
                            }
                            else
                            {
@@ -592,7 +624,9 @@
                            finishTask.remark = "完成";
                            finishTask.finishTime = DateTime.Now;
                            var result = deleteProduct(false, "sys", mod, finishTask.sourcePlace, finishTask, ref errMsg);//删除库存
                            var result = deleteProduct(false, "sys", mod, finishTask.sourcePlace, finishTask, ref errMsg, "堆垛机任务完成-手动出库");//删除库存
                            if (result == false) throw new Exception(errMsg);
                            OutInStockRecordHandler.AddOutInStockRecord(mod, OutInFlag.出库, finishTask.sourcePlace, finishTask.toPlace, finishTask, "出库类型的任务");
@@ -647,6 +681,7 @@
                                errMsg = "缸盖上线/缸体上线任务,中转位为空,暂不处理";
                                return false;
                            }
                            OutInStockRecord_V2_MesHandler.AddRecord(mod, OutInFlag.出库, finishTask.sourcePlace, finishTask, "出库类型的任务", currentTaskType);//堆垛机任务完成后的出库
                            break;
                        default://其他,出库确认
                            //finishTask.taskStatus = 3;
@@ -769,6 +804,7 @@
            //设置目标位有货
            PositionHandler.Free(true, to_positionStation, "处理 缸体上线到旁路工位的处理 的任务", SysGloble.WCSNAME, item);
            OutInStockRecord_V2_MesHandler.AddRecord(mod, OutInFlag.出库, item.toPlace, item, "出库类型的任务", _taskType);//堆垛机任务完成后的出库
            OutInStockRecordHandler.AddOutInStockRecord(mod, OutInFlag.出库, item.sourcePlace, item.toPlace, item, "出库类型的任务");
            //通知天永,给天永发信号
@@ -948,7 +984,7 @@
        /// <param name="positionName"></param>
        /// <param name="res"></param>
        /// <returns></returns>
        public static bool deleteProduct(bool isPerson, string user, dbmodel mod, string positionName, task _task, ref string res)
        public static bool deleteProduct(bool isPerson, string user, dbmodel mod, string positionName, task _task, ref string res, string preLog)
        {
            res = "";
            string[] stations = { "GTU1", "GTU2", "GTU3", "GGU1", "GGU2", "GGU3" };
@@ -979,6 +1015,8 @@
                        List<productStockList> delteStockDatalist = mod.productStockList.Where(x => x.stockId == delteData.positionId).ToList();
                        if (delteStockDatalist.Count > 0)
                        {
                            OutInStockRecord_V2_MesHandler.AddRecordForPersonDelete(mod, OutInFlag.出库, "删除库存:" + preLog,
                                delteStockDatalist, delteStockData.First(), positionName);//堆垛机任务完成后的出库
                            foreach (var itemList in delteStockDatalist)
                            {
                                mod.productStockList.Remove(itemList);
@@ -1039,27 +1077,27 @@
                    //var queryTask6 = (int)taskType.余料回库;
                    var queryStats = (int)taskStatus.完成;
                    var allQty = mod.task.Where(x =>
                    var allQty = mod.task.Where(x =>
                        //(
                            //x.taskType == queryTask1
                            //|| x.taskType == queryTask2
                            //|| x.taskType == queryTask3
                            //|| x.taskType == queryTask4
                            //|| x.taskType == queryTask5
                            //|| x.taskType == queryTask6
                        //x.taskType == queryTask1
                        //|| x.taskType == queryTask2
                        //|| x.taskType == queryTask3
                        //|| x.taskType == queryTask4
                        //|| x.taskType == queryTask5
                        //|| x.taskType == queryTask6
                        //) &&
                        x.taskStatus == queryStats).Count();
                    var nowDateTimeStr_1 = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00");
                    var nowDateTimeStr_2 = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59");
                    var todayQty = mod.task.Where(x =>
                        //(
                           //x.taskType == queryTask1
                           //|| x.taskType == queryTask2
                           //|| x.taskType == queryTask3
                           //|| x.taskType == queryTask4
                           //|| x.taskType == queryTask5
                           //|| x.taskType == queryTask6
                    var todayQty = mod.task.Where(x =>
                       //(
                       //x.taskType == queryTask1
                       //|| x.taskType == queryTask2
                       //|| x.taskType == queryTask3
                       //|| x.taskType == queryTask4
                       //|| x.taskType == queryTask5
                       //|| x.taskType == queryTask6
                       //) &&
                       x.taskStatus == queryStats
                       && x.finishTime != null && x.finishTime >= nowDateTimeStr_1 && x.finishTime <= nowDateTimeStr_2
@@ -1067,7 +1105,7 @@
                    var nowDateTimeStr_3 = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM") + "-01 00:00:00");
                    var nowDateTimeStr_4 = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM") + "-30 23:59:59");
                    var monthQty = mod.task.Where(x =>
                    var monthQty = mod.task.Where(x =>
                      //  (
                      //     x.taskType == queryTask1
                      //    || x.taskType == queryTask2