| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 | #!/usr/bin/env python# -*- coding: utf-8 -*-"""	demeter web	name:origin.py 溯源相关	author:rabin"""from __load__ import *import randomclass Code(object):	@staticmethod	def get(self, value):		cdate = Demeter.date(value['cdate'], '%Y%m%d%H%M%S')		#number = Demeter.compressUuid(value['id']).upper()		min = 1000		max = 9999		number = 'NXH' + str(value['farm_id'] + 10000) + '-' + str(value['cdate']) + str(random.randint(min, max))		info = self.service('common').one('origin_batch', number=number)		if info and info['id'] != value['id']:			return Code.get(self, value)		#url = Demeter.config['front']['qrcode'] + self.data['setting']['web'] + 'origin/view?qrcode=' + value['number']		update = {}		update['number'] = number		state = self.service('common').update('origin_batch', value['id'], update, cdate=False)		return numberclass Origin(object):	@staticmethod	def get(self, value):		value['zzdates'] = Demeter.date(value['zzdate'], '%Y-%m-%d')		value['csdates'] = Demeter.date(value['csdate'], '%Y-%m-%d')		device = self.service('common').one('device_gateway', id=value['gateway_id'])		value['device'] = device['name']		land = self.service('common').one('farm_work_land', id=value['land_id'])		if land:			value['land'] = land['name']		if not value['number']:			value['number'] = Code.get(self, value)		self.data['url'] = Demeter.config['web']['originurl'] + value['id'] + '&code=' + value['number']		value['qrcode'] = Demeter.config['front']['qrcode'] + self.data['url']		return valueclass index_path(Load):	"""	@api {get} /origin 获取溯源批次列表	@apiVersion 1.0.0	@apiName getOrigin	@apiGroup Farm	@apiParam {String} page 页数	@apiSuccess {Object[]} setting 基本信息	@apiSuccess {String}   setting.name  站点名	@apiSuccess {Number}   setting.farm  当前的农场ID	@apiSuccess {Object[]} list 溯源批次列表信息	@apiSuccess {String}   list.name  名称	@apiSuccess {String}   list.id	ID	@apiSuccess {Object[]} page 分页信息	@apiSuccess {String}   page.current  当前页	@apiSuccess {String}   page.total	总页数	@apiSuccess {String}   page.num	每页数据条数	@apiSuccess {String}   page.totalNum	总数据条数		@apiErrorExample 操作成功	{"status": 1, "msg": "yes", "code": 0, "data": {"url": "http://192.168.15.10:8089/origin?id=919d41a1-de9b-51f4-a1b1-46ce826fe49e&code=NXH10001-15093486295276", "setting": {"farm": 1, "user": "229cfd36-9399-5599-b2b5-c53174c3de19", "name": "\u519c\u5c0f\u76d2", "copyright": "2017 nongxiaohe.com v1.0.0", "site": "http://www.nongxiaohe.com/"}, "list": [{"gateway_id": "542535db-6c0b-51fc-9f73-cafb3872ce76", "land": "\u5730\u57572\u53f7", "name": "test", "land_id": "6b18f8b5-c9e5-5600-8808-dad30fa4ea93", "farm_id": 1, "zzdates": "2017-10-10", "number": "NXH10001-15093486295276", "zzdate": 1507593600, "device": "\u9ed8\u8ba4\u7f51\u5173", "state": true, "csdates": "2017-10-11", "csdate": 1507680000, "qrcode": "http://pan.baidu.com/share/qrcode?w=300&h=300&url=http://192.168.15.10:8089/origin?id=919d41a1-de9b-51f4-a1b1-46ce826fe49e&code=NXH10001-15093486295276", "cdate": 1509348717, "id": "919d41a1-de9b-51f4-a1b1-46ce826fe49e"}], "page": {"current": 1, "ajax": false, "total": 1, "num": 15, "totalNum": 1}, "base": {}}}	@apiErrorExample 操作失败	{"status": 2, "msg": "\u64cd\u4f5c\u5931\u8d25", "code": 0, "data": {}}	"""	@auth	@Web.setting	def get(self):		self.data['list'] = self.service('common').list('origin_batch', state=True, page=True)		if self.data['list']:			for key, value in enumerate(self.data['list']):				self.data['list'][key] = Origin.get(self, value)		self.out('yes', self.data)	"""	@api {post} /origin 更新溯源批次	@apiVersion 1.0.0	@apiName updateOrigin	@apiGroup Farm	@apiParam {String} id 批次ID,为空则插入新记录	@apiParam {String} update_name 批次名称	@apiParam {String} update_pic 图片,多个逗号隔开	@apiParam {String} update_device_id 设备网关ID	@apiParam {String} update_land 地块ID	@apiParam {String} update_zzdate 种植时间:2017-10-10	@apiParam {String} update_csdate 采收时间:2017-10-10	@apiSuccess {Bool} status 状态	@apiSuccess {String}   msg  描述	@apiSuccess {Number}   code  状态码	@apiErrorExample 操作成功	{"status": 1, "msg": "操作成功", "code": 0, "data": {}}	@apiErrorExample 操作失败	{"status": 2, "msg": "\u64cd\u4f5c\u5931\u8d25", "code": 0, "data": {}}	"""	@auth	@Web.setting	def post(self):		id = self.input('id', None)		update = {}		update['pic'] = self.input('update_pic')		update['gateway_id'] = self.input('update_device_id')		update['land_id'] = self.input('update_land')		update['zzdate'] = self.input('update_zzdate')		update['csdate'] = self.input('update_csdate')		update['name'] = self.input('update_name')		if not update['gateway_id']:			self.out(u'请选择设备')			return		if not update['land_id']:			self.out(u'请选择地块')			return		if not update['zzdate']:			self.out(u'请输入种植时间')			return		if not update['csdate']:			self.out(u'请输入采收时间')			return		if not update['name']:			self.out(u'请输入产品名称')			return		#update['zzdate'] = Demeter.mktime(update['zzdate'], '%Y-%m-%d')		#update['csdate'] = Demeter.mktime(update['csdate'], '%Y-%m-%d')		state = self.service('common').update('origin_batch', id, update, cdate=False)		self.out('yes', {'id':state})class info_path(Load):	"""	@api {get} /origin/info 获取溯源批次信息	@apiVersion 1.0.0	@apiName getOriginInfo	@apiGroup Farm	@apiParam {String} id 溯源批次id	@apiSuccess {Object[]} setting 基本信息	@apiSuccess {String}   setting.name  站点名	@apiSuccess {Number}   setting.farm  当前的农场ID	@apiSuccess {Object[]} info 溯源批次信息	@apiSuccess {String}   info.name  名称	@apiSuccess {String}   info.id	ID	@apiErrorExample 操作成功	{"status": 1, "msg": "yes", "code": 0, "data": {"info": {"gateway_id": "542535db-6c0b-51fc-9f73-cafb3872ce76", "land": "\u5730\u57572\u53f7", "name": "test", "land_id": "6b18f8b5-c9e5-5600-8808-dad30fa4ea93", "farm_id": 1, "zzdates": "2017-10-10", "number": "NXH10001-15093486295276", "zzdate": 1507593600, "device": "\u9ed8\u8ba4\u7f51\u5173", "state": true, "csdates": "2017-10-11", "csdate": 1507680000, "qrcode": "http://pan.baidu.com/share/qrcode?w=300&h=300&url=http://192.168.15.10:8089/origin?id=919d41a1-de9b-51f4-a1b1-46ce826fe49e&code=NXH10001-15093486295276", "cdate": 1509348717, "id": "919d41a1-de9b-51f4-a1b1-46ce826fe49e"}, "url": "http://192.168.15.10:8089/origin?id=919d41a1-de9b-51f4-a1b1-46ce826fe49e&code=NXH10001-15093486295276", "setting": {"farm": 1, "user": "229cfd36-9399-5599-b2b5-c53174c3de19", "name": "\u519c\u5c0f\u76d2", "copyright": "2017 nongxiaohe.com v1.0.0", "site": "http://www.nongxiaohe.com/"}, "base": {}}}	@apiErrorExample 操作失败	{"status": 2, "msg": "\u64cd\u4f5c\u5931\u8d25", "code": 0, "data": {}}	"""	@auth	@Web.setting	def get(self):		id = self.input('id', None)		if id:			self.data['info'] = self.service('common').one('origin_batch', id=id)			if self.data['info']:				self.data['info'] = Origin.get(self, self.data['info'])							self.out('yes', self.data)		else:			self.out('no')
 |