|
|
@@ -19,6 +19,7 @@ import com.inspur.common.utils.DateUtils;
|
|
|
import com.inspur.common.utils.LibreOfficeConvertUtil;
|
|
|
import com.inspur.common.utils.SecurityUtils;
|
|
|
import com.inspur.common.utils.file.FileUploadUtils;
|
|
|
+import com.inspur.domain.PcDevice;
|
|
|
import com.inspur.domain.app.PartyAppUser;
|
|
|
import com.inspur.domain.partyscreen.PartyMenu;
|
|
|
import com.inspur.domain.partywork.*;
|
|
|
@@ -30,6 +31,7 @@ import com.inspur.face.service.impl.CompreFaceServiceImpl;
|
|
|
import com.inspur.framework.config.ServerConfig;
|
|
|
import com.inspur.framework.manager.AsyncManager;
|
|
|
import com.inspur.mapper.*;
|
|
|
+import com.inspur.netty.message.push.PushMessage;
|
|
|
import com.inspur.netty.message.push.PushMessageType;
|
|
|
import com.inspur.netty.server.PushMessageUtil;
|
|
|
import com.inspur.service.app.IPartyAppUserService;
|
|
|
@@ -38,6 +40,7 @@ import com.inspur.service.partywork.IPartyAttendanceRecordService;
|
|
|
import com.inspur.service.partywork.IPartyMeetingInfoService;
|
|
|
import com.inspur.service.partywork.IPartyMeetingMsgRefService;
|
|
|
import com.inspur.service.partywork.IPartyOrgManageService;
|
|
|
+import com.inspur.socket.WebSocketServer;
|
|
|
import com.inspur.system.domain.SysTableList;
|
|
|
import com.inspur.system.domain.SysUserTableRel;
|
|
|
import com.inspur.system.domain.SysUserWxRel;
|
|
|
@@ -85,6 +88,10 @@ import static com.inspur.common.utils.PageUtils.startPage;
|
|
|
public class PartyMeetingInfoServiceImpl implements IPartyMeetingInfoService
|
|
|
{
|
|
|
private static final Logger log = LoggerFactory.getLogger(PartyMeetingInfoServiceImpl.class);
|
|
|
+
|
|
|
+ @Value("${netty.controlUrl}")
|
|
|
+ private String controlUrl;
|
|
|
+
|
|
|
@Autowired
|
|
|
private PartyMeetingInfoMapper partyMeetingInfoMapper;
|
|
|
|
|
|
@@ -1089,7 +1096,7 @@ public class PartyMeetingInfoServiceImpl implements IPartyMeetingInfoService
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public AjaxResult recognizeFace(Long meetingId, MultipartFile file) {
|
|
|
+ public AjaxResult recognizeFace(Long meetingId, String mac, MultipartFile file) {
|
|
|
|
|
|
PartyFaceRecognition recognitionResult = recognizeFace2AI(meetingId,file);
|
|
|
if (recognitionResult.getOpStatus() != 1 || com.inspur.common.utils.StringUtils.isEmpty(recognitionResult.getRspCode())
|
|
|
@@ -1141,8 +1148,9 @@ public class PartyMeetingInfoServiceImpl implements IPartyMeetingInfoService
|
|
|
// 正常识别到人
|
|
|
// 当前memberId是否已经签到过
|
|
|
PartyAttendanceRecord attendanceRecord = partyAttendanceRecordMapper.selectAttendanced(meetingId,memberId);
|
|
|
- if (null == attendanceRecord) {
|
|
|
+ if (null != attendanceRecord && attendanceRecord.getAttendanceStatus() == 0) {
|
|
|
partyAttendanceRecordMapper.updateStatusByMeetingIdAndMemberId(meetingId, memberId, attendanceStatus);
|
|
|
+ attendanceRecord.setSignTime(DateUtils.getNowDate());
|
|
|
newAttendanceRecordList.add(attendanceRecord);
|
|
|
} else {
|
|
|
log.info("memberId:{}已经签到过,meetingId:{}",memberId,meetingId);
|
|
|
@@ -1152,9 +1160,34 @@ public class PartyMeetingInfoServiceImpl implements IPartyMeetingInfoService
|
|
|
// 更新本次会议的签到人数
|
|
|
recognitionResult.setNewAddNum(newAttendanceRecordList.size());
|
|
|
partyFaceRecognitionMapper.updatePartyFaceRecognition(recognitionResult);
|
|
|
+ // 发送长连接消息
|
|
|
+ sendSign2Screen(meetingId,mac,newAttendanceRecordList);
|
|
|
return AjaxResult.success(memberMap);
|
|
|
}
|
|
|
|
|
|
+ private void sendSign2Screen(Long meetingId, String mac, List<PartyAttendanceRecord> newAttendanceRecordList) {
|
|
|
+ if (CollectionUtils.isEmpty(newAttendanceRecordList)) {
|
|
|
+ log.info("本次会议没有新增签到记录,meetingId:{},mac:{}");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // 发送长连接消息
|
|
|
+ JSONObject msgJson = new JSONObject();
|
|
|
+ msgJson.put("meetingId",meetingId);
|
|
|
+ msgJson.put("mac",mac);
|
|
|
+ msgJson.put("newRecords",newAttendanceRecordList);
|
|
|
+
|
|
|
+
|
|
|
+ PushMessage pushMessage = new PushMessage();
|
|
|
+ pushMessage.setMessageType(PushMessageType.CONTROL_FACE_SIGN_RESULT.getValue());
|
|
|
+ pushMessage.setMessageData(msgJson);
|
|
|
+
|
|
|
+ String controlParam = JSON.toJSONString(pushMessage);
|
|
|
+
|
|
|
+ PushMessageUtil.remoteMeetingControl(mac, mac, controlUrl, controlParam);
|
|
|
+ log.info("远程控制开始,参数:{}", controlParam);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
private PartyFaceRecognition recognizeFace2AI(Long meetingId, MultipartFile file) {
|
|
|
Long userId = SecurityUtils.getLoginUser().getUserId();
|
|
|
Map<String,String> fileMap = uploadFile(file);
|