123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- """
- demeter web
- name:origin.py 溯源相关
- author:rabin
- """
- from __load__ import *
- import random
- class 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 number
- class 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 value
- class 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, search={'farm_id': Demeter.config['setting']['farm']})
- 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['pic_id'] = self.input('update_pic_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.data['pic'] = []
- pic = self.service('common').list('device_info', state=True, search={'hardware_type':6, 'farm_id':self.data['info']['farm_id']})
- if pic:
- for key, value in enumerate(pic):
- pic[key]['cdates'] = Demeter.date(value['cdate'])
- self.data['pic'] = pic
- self.out('yes', self.data)
- else:
- self.out('no')
|