You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

114 lines
4.5 KiB

# -*- coding: utf-8 -*-
"""
api.bai
~~~~~~~~~~~~~~
有关报损的接口.
:copyright: 云南新八达科技有限公司.
:author: 李进才.
"""
import pandas as pd
from diff.stock import getDiffStockList
from utils.PageHepler import db_page, db_page_entity
from utils.apiDoc import *
from utils.configOperatingTypeHelper import GetOperatingTypeScrap
from utils.outStockHelper import *
from utils.scrapHelper import scrap_
@bad.route('/upload')
class BadUpload(Resource):
"""
报损
"""
@staticmethod
def post():
token = request.headers.get('X-Token')
data = request.json
app.logger.info(data)
reagentStock = ReagtStock.query.filter_by(StockId=data['StockId']).first()
reagentReagent = ReagtReagent.query.filter_by(ReagentId=reagentStock.ReagentId).first()
if data['OutStockNumber'] > reagentStock.LastNumber:
return BadResponse(ResultCode.PARAM_IS_INVALID, None, None)
if data['OutStockNumber'] < reagentStock.LastNumber or (data['OutStockNumber'] == reagentStock.LastNumber and
reagentStock.MinNumberUnit > data['OutStockNumber'] *
reagentReagent.Ratio + data['MinNumberUnit']):
LogAdd(token, GetOperatingTypeBad(), data, data['Code'], data['Name'], reagentStock.PinYinCode,
data['OutStockNumber'], data['Specification'], data['Position'], operateMinNumber=
data['MinNumberUnit'],reagentId=reagentReagent.ReagentId)
reagentStock.LastNumber -= data['OutStockNumber']
reagentStock.MinNumberUnit -= data['OutStockNumber'] * reagentReagent.Ratio
reagentStock.MinNumberUnit -= data['MinNumberUnit']
db.session.commit()
elif data['OutStockNumber'] == reagentStock.LastNumber:
LogAdd(token, GetOperatingTypeBad(), data, data['Code'], data['Name'], reagentStock.PinYinCode,
data['OutStockNumber'], data['Specification'], data['Position'], operateMinNumber=
data['MinNumberUnit'], reagentId=reagentStock.ReagentId)
db.session.delete(reagentStock)
db.session.delete(reagentStock)
db.session.commit()
reagentBad = ReagtBad(VerifyTime=datetime.now().strftime("%Y-%m-%d %H:%M"), Number=data['OutStockNumber'],
VerifyPeople=verify_jwt_username(token), Code=data['Code'], Remark=data['Remark'])
db.session.add(reagentBad)
db.session.commit()
return SuccessResponse(ResultCode.SUCCESS, None, None)
@bad.route('/scrap')
class Scrap(Resource):
"""
报废单个试剂
"""
@staticmethod
def get():
token = request.headers.get('X-Token')
scrap_(request.args.get('StockId'), request.args.get('scrapNumber'), token, request.args)
return SuccessResponse(ResultCode.SUCCESS, None, None)
@bad.route('/scrapExpirationList')
class ScrapExpirationList(Resource):
"""
过期待报废药品列表
"""
@staticmethod
def get():
data = request.args
filterObject = getDiffStockList()
filterObject = filterObject.filter(ReagtStock.Expiration < datetime.now())
data_list = db_page(filterObject, ReagtStock.Expiration, data, 3)
return SuccessResponse(ResultCode.SUCCESS, {'totalNumber': filterObject.count(), 'list': data_list}, None)
@bad.route('/scrapExpiration')
class ScrapExpiration(Resource):
"""
一键报废过期药品
"""
@staticmethod
def get():
token = request.headers.get('X-Token')
for expiration in ReagtStock.query.filter(ReagtStock.Expiration < datetime.now()).all():
scrap_(expiration.StockId, expiration.LastNumber, token, request.args)
return SuccessResponse(ResultCode.SUCCESS, None, None)
@bad.route('/scrapList')
class ScrapList(Resource):
"""
报废单 数据
"""
@staticmethod
def get():
scrap_list = ReagtLog.query.filter(ReagtLog.OperatingType == GetOperatingTypeScrap()). \
filter(ReagtLog.OperatingTime > request.args.get('startTime')). \
filter(ReagtLog.OperatingTime < request.args.get('endTime'))
return SuccessResponse(ResultCode.SUCCESS,
{'list': db_page_entity(scrap_list,
request.args, scrap_list.count())}, None)