qty_stock_material.lua 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. ---
  2. --- Generated by EmmyLua(https://github.com/EmmyLua)
  3. --- Created by 81460.
  4. --- DateTime: 2020-01-13 14:10
  5. --- 纸张、辅料的库存数量操作
  6. local key = KEYS[1]
  7. local field = ARGV[1]
  8. local incrNum = tonumber(ARGV[2])
  9. local x = {}
  10. local nowNum = tonumber(redis.call('HGET', key, field))
  11. if (nowNum == nil) then
  12. x['beforeStock'] = 0
  13. x['insert'] = 1
  14. else
  15. x['beforeStock'] = nowNum
  16. x['insert'] = 0
  17. end
  18. if (nowNum == nil) then
  19. if (incrNum >= 0) then
  20. --- 入库操作
  21. redis.call("HSET", key, field, incrNum)
  22. x['stockNum'] = incrNum
  23. x['afterStock'] = incrNum
  24. else
  25. --- 出库操作
  26. x['stockNum'] = -1
  27. x['insert'] = -1
  28. x['afterStock'] = -1
  29. end
  30. else
  31. local afterNum = tonumber(redis.call("HINCRBY", key, field, incrNum))
  32. if (afterNum >= 0.0) then
  33. --- 可以操作
  34. x['stockNum'] = incrNum
  35. x['afterStock'] = afterNum
  36. --- return afterNum
  37. else
  38. --- 为负了,则加回去,不允许操作
  39. redis.call("HINCRBY", key, field, -1 * incrNum)
  40. x['stockNum'] = -1
  41. x['insert'] = -1
  42. x['afterStock'] = -1
  43. --- return -1
  44. end
  45. end
  46. local time = redis.call('TIME')
  47. x['time'] = time[1]
  48. x['microseconds'] = time[2]
  49. local re = cjson.encode(x);
  50. return re