hyarra = array('正常','会议中','结束','取消');
$this->ytarra = array('等待','待进行','进行中','已结束');
$this->hyarrb = array('green','blue','#ff6600','#888888');
$this->dbobj = c('date');
$this->meeting_room = m("meeting_room")->meetingRoomIdList();
$this->reatearr = array(
'd' => '每天',
'w1' => '每周一',
'w2' => '每周二',
'w3' => '每周三',
'w4' => '每周四',
'w5' => '每周五',
'w6' => '每周六',
'w7' => '每周日',
'm' => '每月',
'y' => '每年',
);
// m("log")->addlog("会议室审批", "创建");
$phoneNum = [
"15309501557",
"17701056405"
];
$signName = "E通新枣泉";
$param = [
[
"name"=>"秦锐1",
"meetdate"=>"2024-04-08",
"meetroom"=>"306会议室"
],
[
"name"=>"秦锐2",
"meetdate"=>"2024-04-08",
"meetroom"=>"306会议室"
]
];
}
//录入页上的标题
public function inputtitle() {
return "会议室审批单";
}
//子表数据替换处理$lx=0编辑时,1展示时
protected function flowsubdata($rows, $lx=0){
for ($i = 0; $i < count($rows); $i++) {
if (isset($rows[$i]['topic_state']) && !empty($rows[$i]['topic_state'])) {
$index = $rows[$i]['topic_state'] ?? 1;
$rows[$i]['topic_state'] = $this->ytarra[$index];
} else {
$id = isset($rows[$i]['id']);
m('meeting_topics')->update(['topic_state'=>1], "id={$id}");
}
}
return $rows;
}
// 初始化单据可替换其他属性,$lx,0默认,1详情展示,2列表显示,3打印页,4外部详情页
public function flowrsreplace($rs, $lx=0)
{
// m('log')->addlog('会议单据', json_encode($rs, true));
$this->id = $rs['id'];
$zt = $rs['meet_state'];
$is_hand = $rs['is_hand'] ?? 0;
$room_id = $rs['room_id'];
$nzt = $zt;
$time = time();
$stime = strtotime($rs['start_time']);
$etime = strtotime($rs['end_time']);
if($is_hand != 1){
if($etime < $time){
$nzt = 2;
} else if ($stime > $time){
$nzt = 0;
} else {
$nzt = 1;
$topic = m('meeting_topics')->getone("mid={$this->id}",'id, topic_state', 'sort');
if (isset($topic['id']) && $topic['topic_state']<2) {
m('meeting')->firstMeetingTopicStart($this->id);
}
}
}
if ($stime <= $time && $nzt != 2) {
$nzt = 1;
}
// 更新数据状态
if($zt != $nzt){
$this->update('meet_state='.$nzt.'', $rs['id']);
$zt = $nzt;
}
// 将id转换为文字
$rs['meet_state'] = $this->getstatezt($zt);
if (!empty($room_id)) $rs['room_id'] = $this->meeting_room[$room_id]['room_name'];
$rs['state_info'] = $this->getApproval($rs['nowcheckname'] ?? '');
return $rs;
}
// $ors当前单据操作信息,$crs提交过来的信息
public function flowoptmenu($ors, $crs)
{
// 切换会议议题
if ($ors['num'] == 'changeTopic') {
$topics = $this->db->getall("select * from `[Q]meeting_topics` where mid = {$this->id} order by sort");
for ($i = 0; $i < count($topics); $i++) {
if(isset($topics[$i]['topic_state']) && $topics[$i]['topic_state'] == 2) {
$id = $topics[$i]['id'];
$data = ['topic_state'=>$topics[$i]['topic_state']+1];
m('meeting_topics')->update($data, "id={$id}");
if (isset($topics[$i+1]['topic_state'])) {
$id = $topics[$i+1]['id'];
$data = ['topic_state'=>2];
m('meeting_topics')->update($data, "id={$id}");
}
if (isset($topics[$i+2]['topic_state'])) {
$id = $topics[$i+2]['id'];
$data = ['topic_state'=>1];
m('meeting_topics')->update($data, "id={$id}");
}
break;
}
}
if (isset($topics[count($topics) - 1]) && $topics[count($topics) - 1]['topic_state'] == 2) {
m('meeting')->update(['is_hand'=>1,'meet_state'=>2], "id={$this->id}");
}
} else if ($ors['num'] == 'enableMeeting') {
$time = time();
$stime = strtotime($this->rs['start_time']);
$etime = strtotime($this->rs['end_time']);
if ($stime < $time){
$data = [
'meet_state'=>1,
'is_hand'=>1
];
} else if ($stime >= $time) {
$data = [
'meet_state'=>0,
'is_hand'=>1
];
}
m('meeting')->update($data, "id={$this->id}");
$topic = m('meeting_topics')->getone("mid={$this->id}", "id", 'sort desc');
if (isset($topic['id'])) {
m('meeting_topics')->update(['topic_state'=>'2'], 'id='.$topic['id']);
}
} else if ($ors['num'] == 'disenableMeeting') {
// $data = [
// 'meet_state'=>2,
// 'is_hand'=>1
// ];
//
// m('meeting_key')->update($data, "id={$this->id}");
} else if ($ors['num'] == "noup") {
// 动作名
if ($ors['actname'] == "change_room") {
$data = $this->rs;
$roomName = $this->meeting_room[$data['room_id']]['room_name'];
if (!empty($roomName)) {
$this->update([
"meeting_room"=>$roomName,
], "id={$this->id}");
// 更换会议室 - 发送会议短信
$this->meetingSms($this->id);
}
}
}
}
//删除单据时调用
public function flowdeletebill($sm) {
// m('meet_sys')->deleteMeetingRoom($this->rs);
}
//审核完成后调用
protected function flowcheckafter($zt, $sm){
// 发送会议短信
// $this->meetingSms($this->id);
}
//流程全部完成后调用
protected function flowcheckfinsh($sm){
// 审批完成给负责人发短信
$this->meetingSms($this->id);
}
public function getstatezt($zt)
{
if (isset($this->hyarrb[$zt])) {
$html = ''.$this->hyarra[$zt].'';
return $html;
} else {
return null;
}
}
public function getApproval($names) {
if (empty($names)) {
$html = '已审核';
return $html;
} else {
$html = '待审核
审核人:'.$names.'';
return $html;
}
}
public function meetingSms($meetId) {
if (empty($meetId)) {
m("log")->addlog("短信发送", "会议Id为空");
return;
}
// 获取当前会议信息
$meeting = m("meeting")->getone("id={$this->id}");
$meetTime = $meeting['start_time']; // 时间
$meetName = $meeting['title']; // 主题
$meetRoom = $meeting['meeting_room']; // 地点
m("log")->addlog("会议室审批", "发送短信给".$meeting['attendees']);
$userIds = []; // 用户id
$users = []; // 用户信息
$deptIds = []; // 部门id
$depts = []; // 部门信息
$nullMobileArr = ["user"=>[], "dept"=>[]]; // 没有手机号的用户、部门
// 分解参会人员、部门id
foreach (explode(',', $meeting['attendees_id']) as $val) {
// u=用户 or d=部门
if (substr($val, 0,1) == 'u') {
$userIds[] = substr($val, 1);
} else if (substr($val, 0,1) == 'd') {
$deptIds[] = substr($val, 1);
}
}
// 获取用户电话
if (count($userIds) > 0) {
// 获取所有用户信息
$uInfo = m("admin")->getall("id in (".implode(',', $userIds).")");
for ($i = 0; $i < count($userIds); $i++) {
$mobile = $uInfo[$i]['mobile'];
$name = $uInfo[$i]['name'];
if (empty($mobile)) {
$nullMobileArr['user'][] = $name;
continue;
}
$users['phoneNum'][] = $mobile;
$users['para'][] = [
"name" => $name,
"meetdate" => $meetTime,
"meetname" => $meetName,
"meetroom" => $meetRoom
];
}
if (count($users['phoneNum']) > 0) {
m('send_sms')->sendBatchSms($users['phoneNum'], $users['para'], 1);
}
}
if (count($deptIds) > 0) {
$deptSql = "select distinct b.mobile, a.name from [Q]dept a left join [Q]admin b on a.headid = b.id where a.id in (".implode(',', $deptIds).") ";
$dInfo = $this->db->getall($deptSql);
for ($i = 0; $i < count($dInfo); $i++) {
$mobile = $dInfo[$i]['mobile'];
$name = $dInfo[$i]['name'];
if (empty($mobile)) {
$nullMobileArr['dept'][] = $name;
continue;
}
$depts['phoneNum'][] = $mobile;
$depts['para'][] = [
"name" => $name,
"meetdate" => $meetTime,
"meetname" => $meetName,
"meetroom" => $meetRoom
];
}
if (count($depts['phoneNum']) > 0) {
m('send_sms')->sendBatchSms($depts['phoneNum'], $depts['para'], 1);
}
}
$nullMobileInfo = '';
if (count($nullMobileArr['user']) > 0) {
$nullMobileInfo .= "以下用户未设手机号:".implode(',', $nullMobileArr['user'])."。";
}
if (count($nullMobileArr['dept']) > 0) {
$nullMobileInfo .= "以下部门未设手机号:".implode(',', $nullMobileArr['dept'])."。";
}
if (!empty($nullMobileInfo)) {
m("log")->addlog("会议短信", $nullMobileInfo);
};
}
}