예제 #1
0
        public ResultObj Add(Truck obj)
        {
            // 获取当前登录用户名
            string _currentUserName = CommonService.GetCurrentUser(HttpContext).UserName;

            ResultObj resultObj = new ResultObj();

            if (IsExistSame(obj))
            {
                resultObj.IsSuccess = false;
                resultObj.ErrMsg    = "该车牌号已存在。";
                return(resultObj);
            }

            obj.CreateUser     = _currentUserName;
            obj.CreateTime     = DateTime.Now;
            obj.LastUpdateUser = _currentUserName;
            obj.LastUpdateTime = DateTime.Now;

            _context.Truck.Add(obj);
            _context.SaveChanges();

            resultObj.IsSuccess = true;
            return(resultObj);
        }
예제 #2
0
        public ResultObj Add(NFCCard obj)
        {
            ResultObj resultObj = new ResultObj();

            if (IsExistSameNo(obj))
            {
                resultObj.IsSuccess = false;
                resultObj.ErrMsg    = "编号已存在。";
                return(resultObj);
            }

            if (IsExistSameDeviceNo(obj))
            {
                resultObj.IsSuccess = false;
                resultObj.ErrMsg    = "设备已被其他NFC卡绑定过了。";
                return(resultObj);
            }

            obj.CreateUser     = obj.CreateUser;
            obj.CreateTime     = DateTime.Now;
            obj.LastUpdateUser = obj.LastUpdateUser;
            obj.LastUpdateTime = DateTime.Now;

            _context.NFCCard.Add(obj);
            _context.SaveChanges();

            resultObj.IsSuccess = true;
            return(resultObj);
        }
예제 #3
0
        public ResultObj Add(WorkTicket obj)
        {
            // 获取当前登录用户名
            string _currentUserName = CommonService.GetCurrentUser(HttpContext).UserName;

            ResultObj resultObj = new ResultObj();

            if (IsExistSame(obj))
            {
                resultObj.IsSuccess = false;
                resultObj.ErrMsg    = "该工单编号已存在。";
                return(resultObj);
            }
            //obj.Status = WorkTicketStatus.待接单.ToString();
            obj.Status         = WorkTicketStatus.待拉油.ToString();
            obj.IsDeleted      = false;
            obj.Description    = obj.Description + "【创建工单】操作人:" + _currentUserName + ",时间:" + DateTime.Now;
            obj.CreateUser     = _currentUserName;
            obj.CreateTime     = DateTime.Now;
            obj.LastUpdateUser = _currentUserName;
            obj.LastUpdateTime = DateTime.Now;

            _context.WorkTicket.Add(obj);
            _context.SaveChanges();

            resultObj.IsSuccess = true;
            return(resultObj);
        }
예제 #4
0
        public ResultObj Add(InspectData obj)
        {
            ResultObj resultObj = new ResultObj();

            obj.CreateUser     = obj.CreateUser;
            obj.CreateTime     = DateTime.Now;
            obj.LastUpdateUser = obj.LastUpdateUser;
            obj.LastUpdateTime = DateTime.Now;

            _context.InspectData.Add(obj);
            _context.SaveChanges();

            // 更新任务表:巡检完成时间,巡检完成人,是否完成
            var taskObj = _context.InspectTask.Find(obj.TaskId);

            // 如果未跳检,则更新巡检任务表
            if (taskObj != null && obj.IsJumpInspect.Equals("0"))
            {
                taskObj.InspectCompleteTime = obj.InspectTime;
                taskObj.InspectCompleteUser = obj.InspectUser;
                taskObj.IsComplete          = "2";
                _context.InspectTask.Update(taskObj);
                _context.SaveChanges();

                // 更新nfc卡的最后巡检时间
                List <NFCCard> nfcCardList = _context.NFCCard.Where(p => p.DeviceNo.Equals(obj.DeviceNo)).ToList();
                if (nfcCardList.Count > 0)
                {
                    NFCCard nfcCardObj = nfcCardList.First();
                    nfcCardObj.LastInspectTime = obj.InspectTime;
                    nfcCardObj.LastInspectUser = obj.InspectUser;
                    _context.NFCCard.Update(nfcCardObj);
                    _context.SaveChanges();
                }
            }

            resultObj.IsSuccess = true;
            return(resultObj);
        }
예제 #5
0
        public ResultObj Add(InspectItems obj)
        {
            ResultObj resultObj = new ResultObj();

            if (IsExistSameNo(obj))
            {
                resultObj.IsSuccess = false;
                resultObj.ErrMsg    = "编号已存在。";
                return(resultObj);
            }

            obj.CreateUser     = obj.CreateUser;
            obj.CreateTime     = DateTime.Now;
            obj.LastUpdateUser = obj.LastUpdateUser;
            obj.LastUpdateTime = DateTime.Now;

            _context.InspectItems.Add(obj);
            _context.SaveChanges();

            resultObj.IsSuccess = true;
            return(resultObj);
        }
예제 #6
0
        // 自动处理工单方法
        public ResultObj AutoOperWorkTicket(string jsonStrData)
        {
            ResultObj resultObj = new ResultObj();
            string    msg       = "";
            string    tempStr;

            try
            {
                // 序列化为JObject
                JObject jObject = JsonConvert.DeserializeObject <JObject>(jsonStrData);
                if (jObject == null)
                {
                    tempStr = "序列化对象为空:" + jsonStrData;
                    log.Info(tempStr);
                    msg += tempStr + "\n";
                    resultObj.IsSuccess = false;
                    resultObj.Msg       = msg;
                    return(resultObj);
                }

                // 解析工单数据
                JObject jObjectWork = jObject.Value <JObject>("System");
                if (jObjectWork == null)
                {
                    tempStr = "序列化工单数据为空:" + jObject.Value <string>("System");
                    log.Info(tempStr);
                    msg += tempStr + "\n";
                    resultObj.IsSuccess = false;
                    resultObj.Msg       = msg;
                    return(resultObj);
                }

                // 拉油完成后,此变量会置1,需将拉油相关信息,如拉油时长、拉液量等保存后,清除此位
                int AckTaskComplete = jObjectWork.Value <int>("AckTaskComplete");
                tempStr = "AckTaskComplete的值为:" + AckTaskComplete;
                log.Info(tempStr);
                msg += tempStr + "\n";
                if (AckTaskComplete == 1)
                {
                    TimeSpan interval;

                    // 实际开始拉油时间
                    DateTime StartLoadingTime = jObjectWork.Value <DateTime>("StartLoadingTime");
                    interval = DateTime.Now - StartLoadingTime;
                    // 计算开始拉油时间和当前时间的时间差(天)
                    if (interval.TotalDays > 1 || interval.TotalDays < 0)
                    {
                        tempStr = "实际开始拉油时间StartLoadingTime不合理:" + StartLoadingTime;
                        log.Info(tempStr);
                        msg += tempStr + "\n";
                        resultObj.IsSuccess = false;
                        resultObj.Msg       = msg;
                        return(resultObj);
                    }

                    // 实际结束拉油时间
                    DateTime StopLoadingTime = jObjectWork.Value <DateTime>("StopLoadingTime");
                    interval = DateTime.Now - StopLoadingTime;
                    // 计算结束拉油时间和当前时间的时间差(天)
                    if (interval.TotalDays > 1 || interval.TotalDays < 0)
                    {
                        tempStr = "实际结束拉油时间StopLoadingTime不合理:" + StopLoadingTime;
                        log.Info(tempStr);
                        msg += tempStr + "\n";
                        resultObj.IsSuccess = false;
                        resultObj.Msg       = msg;
                        return(resultObj);
                    }

                    // 开始时间和结束时间差计算(天)
                    interval = StopLoadingTime - StartLoadingTime;
                    if (interval.TotalDays > 1 || interval.TotalDays < 0)
                    {
                        tempStr = "实际开始拉油时间StartLoadingTime:" + StartLoadingTime + ",实际结束拉油时间StopLoadingTime:" + StopLoadingTime + "时间顺序不合理";
                        log.Info(tempStr);
                        msg += tempStr + "\n";
                        resultObj.IsSuccess = false;
                        resultObj.Msg       = msg;
                        return(resultObj);
                    }

                    // 实际拉液量
                    float OilLoaded = jObjectWork.Value <float>("OilLoaded");
                    if (OilLoaded <= 0)
                    {
                        tempStr = "实际拉液量不合理:" + OilLoaded;
                        log.Info(tempStr);
                        msg += tempStr + "\n";
                        resultObj.IsSuccess = false;
                        resultObj.Msg       = msg;
                        return(resultObj);
                    }

                    // 接收到的二维码
                    string QrCode = jObjectWork.Value <string>("QrCode");
                    tempStr = "QrCode为:" + QrCode;
                    log.Info(tempStr);
                    msg += tempStr + "\n";

                    // 判断是否是工单二维码
                    if (QRCodeEncoder.IsWorkTicket(QrCode) == false)
                    {
                        tempStr = "工单二维码解析不正确:" + QrCode;
                        log.Info(tempStr);
                        msg += tempStr + "\n";
                        resultObj.IsSuccess = false;
                        resultObj.Msg       = msg;
                        return(resultObj);
                    }
                    string SerialNumber = QrCode.Split(":")[1];
                    tempStr = "解析出的工单编号为:" + SerialNumber;
                    log.Info(tempStr);
                    msg += tempStr + "\n";

                    // 根据工单编号和工单状态查询工单
                    DbContextOptions <H4WebContext>        dbContextOption        = new DbContextOptions <H4WebContext>();
                    DbContextOptionsBuilder <H4WebContext> dbContextOptionBuilder = new DbContextOptionsBuilder <H4WebContext>(dbContextOption);
                    H4WebContext _context = new H4WebContext(dbContextOptionBuilder.UseNpgsql(_configuration.GetConnectionString("PostgreSql")).Options);
                    var          obj      = _context.WorkTicket.Where(p => p.SerialNumber.Equals(SerialNumber) && p.Status.Equals(WorkTicketStatus.待拉油.ToString())).FirstOrDefault();
                    if (obj == null)
                    {
                        tempStr = "满足条件的工单不存在(工单编号" + SerialNumber + ",状态待拉油)";
                        log.Info(tempStr);
                        msg += tempStr + "\n";
                        resultObj.IsSuccess = false;
                        resultObj.Msg       = msg;
                        return(resultObj);
                    }

                    // 如果工单存在则修改工单
                    obj.LoadingActualBeginTime = StartLoadingTime;
                    obj.LoadingActualEndTime   = StopLoadingTime;
                    obj.OilLoaded = OilLoaded;
                    obj.OilLoader = obj.DriverPhone;

                    obj.Status      = WorkTicketStatus.待卸油.ToString();
                    obj.Description = obj.Description + "\n【拉油】操作人:" + obj.DriverPhone + ",时间:" + DateTime.Now;

                    obj.LastUpdateTime = DateTime.Now;
                    obj.LastUpdateUser = obj.DriverPhone;

                    _context.WorkTicket.Update(obj);
                    _context.SaveChanges();

                    // 通过Grpc修改参数
                    SystemPara systemPara = new SystemPara();
                    systemPara.ParaName  = "AckTaskComplete";
                    systemPara.ParaValue = "0";
                    // 拉油完成后,此变量会置1,需将拉油相关信息,如拉油时长、拉液量等保存后,清除此位
                    ResultObj setParamsResult = StationControlService.SetSystemSettingSingleParaService(systemPara);
                    if (setParamsResult.IsSuccess == false)
                    {
                        tempStr = "修改参数AckTaskComplete失败!";
                        log.Info(tempStr);
                        msg += tempStr + "\n";
                        resultObj.IsSuccess = false;
                        resultObj.Msg       = msg;
                        return(resultObj);
                    }

                    tempStr = "自动处理工单成功。";
                    log.Info(tempStr);
                    msg += tempStr + "\n";
                    resultObj.IsSuccess = true;
                    resultObj.KeyInfo   = obj.SerialNumber;
                    resultObj.Msg       = msg;
                    return(resultObj);
                }
                else
                {
                    tempStr = "不用处理工单。";
                    log.Info(tempStr);
                    msg += tempStr + "\n";
                    resultObj.IsSuccess = false;
                    resultObj.Msg       = msg;
                    return(resultObj);
                }
            }
            catch (Exception e)
            {
                tempStr = "自动处理工单发生异常:" + e.Message;
                log.Info(tempStr);
                msg += tempStr + "\n";
                resultObj.IsSuccess = false;
                resultObj.Msg       = msg;
                return(resultObj);
            }
        }
예제 #7
0
        public List <InspectTaskView> GetTaskList(string queryStr)
        {
            JObject jObject = new JObject();

            if (string.IsNullOrEmpty(queryStr) == false)
            {
                jObject = JsonConvert.DeserializeObject <JObject>(queryStr);
            }

            string taskName        = jObject.Value <string>("taskName");
            string taskNo          = jObject.Value <string>("taskNo");
            string deviceName      = jObject.Value <string>("deviceName");
            string inspectName     = jObject.Value <string>("inspectName");
            string inspectItemName = jObject.Value <string>("inspectItemName");
            string inspectTime     = jObject.Value <string>("inspectTime");
            string inspectUser     = jObject.Value <string>("inspectUser");

            //防止查询条件都不满足,先生成一个空的查询
            var where = (from task in _context.InspectTask
                         join inspect in _context.Inspect on task.InspectNo equals inspect.InspectNo
                         join device in _context.Device on task.DeviceNo equals device.DeviceNo
                         join nfcCard in _context.NFCCard on device.DeviceNo equals nfcCard.DeviceNo
                         join inspectItem in _context.InspectItems on task.InspectItemNo equals inspectItem.InspectItemNo
                         select new InspectTaskView
            {
                GId = task.GId,
                InspectNo = task.InspectNo,
                DeviceNo = task.DeviceNo,
                InspectItemNo = task.InspectItemNo,
                TaskOrderNo = task.TaskOrderNo,
                TaskNo = task.TaskNo,
                TaskName = task.TaskName,
                InspectTime = task.InspectTime,
                InspectUser = task.InspectUser,
                IsComplete = task.IsComplete,
                InspectCompleteTime = task.InspectCompleteTime,
                InspectCompleteUser = task.InspectCompleteUser,
                Remark = task.Remark,
                CreateTime = task.CreateTime,
                CreateUser = task.CreateUser,
                LastUpdateTime = task.LastUpdateTime,
                LastUpdateUser = task.LastUpdateUser,
                LineName = task.LineName,
                InspectCycles = task.InspectCycles,
                CycleStartTime = task.CycleStartTime,
                CycleEndTime = task.CycleEndTime,

                InspectName = inspect.InspectName,
                DeviceName = device.DeviceName,
                InspectItemName = inspectItem.InspectItemName,
                NfcCardNo = nfcCard.NFCCardNo,
                Unit = inspectItem.Unit,
                ItemRemark = inspectItem.Remark,

                //待下发或者待处理的数据都可以请求到,只请求当天的数据
            }).Where(p => (p.IsComplete.Equals("0") || p.IsComplete.Equals("1")) && p.InspectTime.Date == DateTime.Now.Date);

            if (string.IsNullOrEmpty(taskNo) == false)
            {
                where = where.Where(p => p.TaskNo.Contains(taskNo));
            }
            if (string.IsNullOrEmpty(taskName) == false)
            {
                where = where.Where(p => p.TaskName.Contains(taskName));
            }
            if (string.IsNullOrEmpty(inspectName) == false)
            {
                where = where.Where(p => p.InspectName.Contains(inspectName));
            }
            if (string.IsNullOrEmpty(deviceName) == false)
            {
                where = where.Where(p => p.DeviceName.Contains(deviceName));
            }
            if (string.IsNullOrEmpty(inspectItemName) == false)
            {
                where = where.Where(p => p.InspectItemName.Contains(inspectItemName));
            }
            if (string.IsNullOrEmpty(inspectTime) == false)
            {
                DateTime inpectDate = DateTime.Parse(DateTime.Parse(inspectTime).ToShortDateString());
                DateTime startTime  = inpectDate.AddDays(0);
                DateTime endTime    = inpectDate.AddDays(1);
                where = where.Where(p => p.InspectTime >= startTime && p.InspectTime <= endTime);
            }
            if (string.IsNullOrEmpty(inspectUser) == false)
            {
                where = where.Where(p => p.InspectUser.Contains(inspectUser));
            }

            //默认结果按照任务编号、任务顺序号正序排序
            where = where.OrderBy(p => p.TaskNo).ThenBy(p => p.TaskOrderNo);
            //获取结果
            List <InspectTaskView> dataList = where.ToList();

            // 批量更新任务状态:待完成1
            List <InspectTask> updateList = new List <InspectTask>();

            for (int i = 0; i < dataList.Count; i++)
            {
                InspectTask updateObj = _context.InspectTask.Find(dataList[i].GId);
                if (updateObj != null)
                {
                    updateObj.IsComplete     = "1";//待完成
                    updateObj.LastUpdateTime = DateTime.Now;
                    updateObj.LastUpdateUser = inspectUser;
                    updateList.Add(updateObj);
                }
            }
            _context.InspectTask.UpdateRange(updateList);
            _context.SaveChanges();

            return(dataList);
        }