IsImei($Imei)) { json_fail('该Imei号不存在'); } if (!($param['CntVersion']) || $param['CntVersion'] == '') { $param['CntVersion'] = 0; } $version = $param['CntVersion']; return $this->DataIssued($Imei, $version); } //收到的数据 public function receive() { $token = $_GET['token']; if (!$token || $token != '22723927C') { json_fail('缺少token或者token不对'); } $param = json_decode(file_get_contents("php://input"), true); //校验imei是否存在 $where = []; if (!isset($param['Imei']) || $param['Imei'] == '') { json_fail('缺少设备IMEI号参数'); } $Imei = $param['Imei']; //校验Imei是否存在 if (!$this->IsImei($Imei)) { json_fail('该Imei号不存在'); } if (!isset($param['CntVersion']) || $param['CntVersion'] == '') { json_fail('版本号不存在'); } $version = $param['CntVersion']; if (!isset($param['Succ']) || $param['Succ'] == '') { json_fail('缺少返回结果', '', $Imei); } $Succ = $param['Succ']; if (!isset($param['Extra'])) { json_fail('缺少回复内容参数', '', $Imei); } $Extra = json_encode($param['Extra']); $where[] = ['PublishVersion', '=', $version]; $where[] = ['Imei', '=', $Imei]; $ack = Db::name("publish_ack")->where($where)->find(); if (!$ack) { json_fail('没有找到下发记录', '', $Imei); } $data = [ 'Succ' => $Succ, 'AckTime' => msectime(), 'Extra' => $Extra ]; Db::name("publish_ack")->where($where)->update($data); return $this->DataIssued($Imei, $version); } /** * @Descripttion: 数据处理 * @name: likang * @return {*} */ private function DataIssued($Imei, $version) { $where1 = [ ['ContentType', '<>', 'WorkRecord'], ['Imei', '=', NULL], ['Version', '>', $version] ]; $where2 = [ ['Imei', '<>', $Imei], ['ContentType', '=', 'WorkRecord'], ['Version', '>', $version] ]; $where4 = [ ['Imei', '=', $Imei], ['ContentType', '=', 'File'], ['Version', '>', $version] ]; $where3 = []; $CntVersion = $version; $content = null; $list = Db::name('publish') ->whereOr([$where1, $where2, $where4]) ->order('Version asc')->limit(5)->select(); if ($list->isEmpty()) { return json_success('获取成功', $content, $Imei); } //目前不下发数据 截停 return json_success('获取成功', $content, $Imei); foreach ($list as $key => $value) { $da = json_decode($value['Content'], true); //如果是下发计划的话,或取当前长传记录 记录下数据 if ($value['ContentType'] == 'WorkPlan') { $where3[] = ['wind_number', '=', $da['wnum']]; $where3[] = ['fan_number', '=', $da['fnum']]; $where3[] = ['parts', '=', $da['parts']]; $where3[] = ['work_sign', '=', $da['work']]; $DD = WorkRecord::where($where3)->order('fastening_time desc')->value('fastening_torque'); $da['lt'] = $DD ? $DD : 0; } $da['id'] = strval($da['id']); $content[] = [ 'OpType' => $value['Type'], 'CntType' => $value['ContentType'], 'CntVersion' => strval($value['Version']), 'id' => strval($value['ContentId']), 'Content' => $da ]; $CntVersion = strval($value['Version']); } //保存下发的记录 $ack = [ 'PublishVersion' => $CntVersion, 'PublishContent' => json_encode($content), 'Imei' => $Imei, 'AddTime' => msectime() ]; Db::name('publish_ack')->save($ack); return json_success('获取成功', $content, $Imei); } /** * @Descripttion: Imei 是否存在 * @name: likang * @param {*} $imei * @return {*} */ private function IsImei($imei) { $data = Hydraulic::where('imei', $imei)->find(); if ($data) { return true; } else { return false; } } }