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.
 
 
 
 
 

143 lines
7.5 KiB

from sqlalchemy import or_
from utils.PageHepler import db_page
from utils.apiDoc import *
from utils.configOperatingTypeHelper import GetApproveTypeApproving, GetApproveTypeApproved, GetApproveTypeOverrule
import pandas as pd
@approve.route('/add')
class ApproveAdd(Resource):
@staticmethod
def post():
approve_people = verify_jwt_username(request.headers.get('X-Token'))
remark = request.json['remark']
approve_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
approve_status = ReagtApproveStatus.query.filter_by(StatusCode=GetApproveTypeApproving()).first().StatusId
for item in request.json['approveList']:
data = Dict2Obj(item)
reagent_approve = ReagtApprove(ApproveName=data.Name,
Specification=data.Specification,
Maker=data.Maker if 'Maker' in item.keys() else "",
Number=data.InputNumber,
ApprovePeople=approve_people,
ApproveTime=approve_time,
Unit=data.Unit,
ApproveStatus=approve_status,
Remark=remark)
db.session.add(reagent_approve)
db.session.commit()
return SuccessResponse(ResultCode.SUCCESS, None, None)
@approve.route('/list')
class ApproveList(Resource):
@staticmethod
def get():
approve_status = ReagtApproveStatus.query.filter_by(StatusCode=request.args.get('status')).first().StatusId
approve_filter = db.session.query(ReagtApprove.ApproveName,
ReagtApprove.ApproveId,
ReagtApprove.ApproveTime,
ReagtApprove.Maker,
ReagtApprove.Specification,
ReagtApprove.Number,
ReagtApprove.Unit,
ReagtApprove.ApproveTime,
ReagtApprove.ApprovePeople,
ReagtApproveStatus.StatusCode,
ReagtApprove.Verifier,
ReagtApprove.VerifyTime) \
.join(ReagtApproveStatus, ReagtApproveStatus.StatusId == ReagtApprove.ApproveStatus).filter(
ReagtApprove.ApproveStatus == approve_status)
data_list = db_page(approve_filter, ReagtApprove.ApproveTime, request.args, 6)
if request.args.get('pageSize') is not None:
data_list = db_page(approve_filter, ReagtApprove.ApproveTime, request.args,
int(request.args.get('pageSize')))
return SuccessResponse(ResultCode.SUCCESS, {'totalNumber': approve_filter.count(),
'list': data_list}, None)
@approve.route('/agree')
class ApproveAgree(Resource):
@staticmethod
def post():
people = verify_jwt_username(request.headers.get('X-Token'))
approve_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
Name, Specification, Maker, Number, Unit, ApprovePeople, Checker, Purchase, Leader, ApproveTime = [], [], [], [], [], \
[], [], [], [], []
approve_status = ReagtApproveStatus.query.filter_by(StatusCode=GetApproveTypeApproved()).first().StatusId
for item in request.json['approveList']:
data = Dict2Obj(item)
approve_entity = ReagtApprove.query.filter_by(ApproveId=data.ApproveId).first()
Name.append(approve_entity.ApproveName)
ApprovePeople.append(approve_entity.ApprovePeople)
Specification.append(approve_entity.Specification)
Maker.append(approve_entity.Maker)
ApproveTime.append(approve_entity.ApproveTime)
Number.append(approve_entity.Number)
Unit.append(approve_entity.Unit)
Purchase.append('')
Leader.append('')
Checker.append('')
approve_entity.ApproveStatus = approve_status
approve_entity.Verifier = people
approve_entity.VerifyTime = approve_time
db.session.commit()
dit = {'耗材名': Name, '耗材规格': Specification, '生产厂家': Maker, '欲购数量': Number, '耗材单位': Unit,
'申请人': ApprovePeople, '申请时间': ApproveTime, '审核人': Checker, '采购人': Purchase, '分管领导': Leader}
writer = pd.ExcelWriter('./file/'+approve_time.replace(':', '-')+'.xlsx')
df = pd.DataFrame(dit)
# columns参数用于指定生成的excel中列的顺序
df.to_excel(writer, columns=['耗材名', '耗材规格', '生产厂家', '欲购数量', '耗材单位', '申请人', '申请时间', '审核人', '采购人', '分管领导'], index=False, encoding='utf-8',
sheet_name='欲购耗材清单')
writer.save()
return SuccessResponse(ResultCode.SUCCESS, approve_time.replace(':', '-'), None)
@approve.route('/delete')
class ApproveDelete(Resource):
@staticmethod
def get():
db.session.delete(ReagtApprove.query.filter_by(ApproveId=request.args.get('ApproveId')).first())
db.session.commit()
return SuccessResponse(ResultCode.SUCCESS, None, None)
@approve.route('/overrule')
class ApproveOverrule(Resource):
@staticmethod
def get():
approve_status = ReagtApproveStatus.query.filter_by(StatusCode=GetApproveTypeOverrule()).first().StatusId
approve_entity = ReagtApprove.query.filter_by(ApproveId=request.args.get('ApproveId')).first()
approve_entity.ApproveStatus = approve_status
db.session.commit()
return SuccessResponse(ResultCode.SUCCESS, None, None)
@approve.route('/time')
class ApproveTime(Resource):
@staticmethod
def get():
approve_filter = db.session.query(ReagtApprove.VerifyTime).group_by(ReagtApprove.VerifyTime).distinct()
result_data = db_page(approve_filter, ReagtApprove.VerifyTime, request.args, 6)
return SuccessResponse(ResultCode.SUCCESS, {'totalNumber': approve_filter.count(),
'list': result_data}, None)
@approve.route('/submitList')
class SubmitList(Resource):
@staticmethod
def get():
inventoryListFilter = db.session.query(ReagtReagent.Name, ReagtReagent.Specification). \
filter(ReagtReagent.Using == True). \
group_by(ReagtReagent.Name, ReagtReagent.Specification).distinct()
if request.args.get('query') is not None and request.args.get('query') != '':
inventoryListFilter = db.session.query(ReagtReagent.Name, ReagtReagent.Specification). \
group_by(ReagtReagent.Name, ReagtReagent.Specification). \
filter(ReagtReagent.Using == True). \
filter(or_(ReagtReagent.Name.contains(request.args.get('query')), ReagtReagent.Specification
.contains(request.args.get('query')),
ReagtReagent.PinYinCode.contains(request.args.get('query')))).distinct()
result_data = db_page(inventoryListFilter, ReagtReagent.Name, request.args, 10)
return SuccessResponse(ResultCode.SUCCESS, {'totalNumber': inventoryListFilter.count(),
'list': result_data}, None)