예제 #1
0
        public async Task <IActionResult> OpMove([FromRoute] Guid uid, [FromBody] invops_move varinvops_move)
        {
            TerminalMessage result = new TerminalMessage();

            result.message = await _terminalService.Operaion_move(uid, varinvops_move);

            return(Ok(result));
        }
예제 #2
0
        //[AllowAnonymous]
        public async Task <IActionResult> Postinvops_move([FromBody] invops_move varinvops_move)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            string result = "";
            var    uid    = User.GetUserId();

            result = await _terminalService.Operaion_move(uid, varinvops_move);

            if (result == "OK")
            {
                return(CreatedAtAction("Getinvops_move", new { id = varinvops_move.invops_moveId }, varinvops_move));
            }
            else
            {
                return(BadRequest(result));
            }
        }
예제 #3
0
        public async Task <string> Operaion_move(Guid uid, invops_move varinvops_move)
        {
            string    result = "";
            invp_data m      = null;
            invp_tag  t      = null;

            t = _context.invp_tag.FirstOrDefault(z => z.RFID == varinvops_move.rfid);
            if (t != null)
            {
                m = _context.invp_data.FirstOrDefault(z => z.invp_dataId == t.invp_dataId);
                if (m == null)
                {
                    result = "Ошибка. Запчасть не обнаружена";
                }
                else
                {
                    result = m.name;
                }
            }
            else
            {
                result = "Ошибка. Запчасть не обнаружена";
            }

            invwh_cell c = null;

            c = _context.invwh_cell.FirstOrDefault(cc => cc.SHCODE == varinvops_move.shCodeFrom);
            if (c == null)
            {
                result += "Исходная ячейка не найдена. ";
            }


            invwh_cell cTo = null;

            cTo = _context.invwh_cell.FirstOrDefault(cc => cc.SHCODE == varinvops_move.shCodeTo);
            if (cTo == null)
            {
                result += "Целевая ячейка не найдена. ";
            }

            invd_op op = _context.invd_op.FirstOrDefault(op => op.name == "Перемещение");

            if (op == null)
            {
                op           = new invd_op();
                op.invd_opId = Guid.NewGuid();
                op.name      = "Перемещение";
                _context.invd_op.Add(op);
                await _context.SaveChangesAsync();
            }

            //if (varinvops_move.quantity <= 0)
            //{
            //    result += "Количество должно быть положительным числом. ";
            //}

            if (m != null && c != null && cTo != null)  //&& varinvops_move.quantity > 0)
            {
                invwh_loc loc = null;
                loc = _context.invwh_loc.FirstOrDefault(l => l.invwh_locId == c.invwh_locId);

                invwh_loc locTo = null;
                locTo = _context.invwh_loc.FirstOrDefault(l => l.invwh_locId == cTo.invwh_locId);

                // update source cell  status
                invw_info e = null;
                //e = _context.invw_info.FirstOrDefault(ex => ex.storepartid == m.invp_dataId && ex.cellid == c.invwh_cellId);
                e = _context.invw_info.FirstOrDefault(ex => ex.RFID == t.RFID && ex.cellid == c.invwh_cellId);
                int Qty = 0;
                if (e != null)
                {
                    //if (e.Qty > varinvops_move.quantity)
                    //{
                    //    e.Qty -= varinvops_move.quantity;
                    //    _context.Entry(e).State = EntityState.Modified;
                    //}
                    //else if (e.Qty == varinvops_move.quantity)
                    {
                        Qty = (int)e.Qty;
                        _context.invw_info.Remove(e);
                    }
                    //else if (e.Qty < varinvops_move.quantity)
                    //{
                    //    result += "Количество запчастей в ячейке не достаточно для перемещения. Всего: " + e.Qty.ToString();
                    //    _context.invops_move.Add(varinvops_move);
                    //    await _context.SaveChangesAsync();
                    //    return result;
                    //}
                }
                else
                {
                    result += "Не найдена запчасть в исходной ячейке. ";
                    _context.invops_move.Add(varinvops_move);
                    await _context.SaveChangesAsync();

                    return(result);
                }


                // update goal cell  status
                invw_info eTo = null;
                //eTo = _context.invw_info.FirstOrDefault(ex => ex.storepartid == m.invp_dataId && ex.cellid == cTo.invwh_cellId);
                //if (eTo != null)
                //{
                //    eTo.Qty += varinvops_move.quantity;
                //    _context.Entry(eTo).State = EntityState.Modified;

                //}
                //else
                {
                    eTo             = new invw_info();
                    eTo.invw_infoId = Guid.NewGuid();
                    //eTo.Qty = varinvops_move.quantity;
                    eTo.Qty         = Qty; // при перемещении количество не меняем
                    eTo.storepartid = m.invp_dataId;
                    eTo.locationid  = cTo.invwh_locId;
                    eTo.cellid      = cTo.invwh_cellId;
                    eTo.RFID        = varinvops_move.rfid;
                    if (locTo != null)
                    {
                        eTo.theStore = locTo.theStore;
                    }
                    _context.invw_info.Add(eTo);
                }

                // save history
                invm_info h = new invm_info();
                h.invm_infoId = Guid.NewGuid();
                h.fromcell    = c.invwh_cellId;
                h.toCell      = cTo.invwh_cellId;
                h.theUser     = uid;
                h.theOP       = op.invd_opId;
                h.optime      = DateTime.Now;
                //h.Qty = varinvops_move.quantity;
                h.Qty         = Qty;
                h.storepartid = m.invp_dataId; // запчасть
                h.theDep      = Guid.Empty;
                _context.invm_info.Add(h);

                // save operation for control only
                _context.invops_move.Add(varinvops_move);
                await _context.SaveChangesAsync();

                return("OK");
            }
            else
            {
                _context.invops_move.Add(varinvops_move);
                await _context.SaveChangesAsync();

                return(result);
            }
        }