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)