diff --git a/src/main/java/com/supwisdom/dlpay/conference/controller/ConferenceController.java b/src/main/java/com/supwisdom/dlpay/conference/controller/ConferenceController.java
index 2d3585f..e201477 100644
--- a/src/main/java/com/supwisdom/dlpay/conference/controller/ConferenceController.java
+++ b/src/main/java/com/supwisdom/dlpay/conference/controller/ConferenceController.java
@@ -210,17 +210,20 @@
 
 
             if (conferenceService.saveNewConference(confname.trim(), DateUtil.unParseToDateFormat(confdate), conftype, DateUtil.unParseToDateFormat(starttime), DateUtil.unParseToDateFormat(endtime), DateUtil.unParseToDateFormat(attendtime), oper, deviceid, remark)) {
-                List<TConferenceReview> review=conferenceService.getReviewerByDeptcodes(deptcodes);
-                CommonSendMessageParam param=new CommonSendMessageParam();
-                param.setContent("您有新的会议需要分配，请确认");
-                param.setTitle("会议分配通知");
-                param.setMsgtype("conference");
-                for(TConferenceReview rev:review){
-                    param.setUserid(rev.getCustid());
-                    ApiResponse resp=commonProxy.sendMsg(param);
-                    resp.getRetcode();
-                    resp.getRetmsg();
+                if(deptcodes.size()>0){
+                    List<TConferenceReview> review=conferenceService.getReviewerByDeptcodes(deptcodes);
+                    CommonSendMessageParam param=new CommonSendMessageParam();
+                    param.setContent("您有新的会议需要分配，请确认");
+                    param.setTitle("会议分配通知");
+                    param.setMsgtype("conference");
+                    for(TConferenceReview rev:review){
+                        param.setUserid(rev.getCustid());
+                        ApiResponse resp=commonProxy.sendMsg(param);
+                        resp.getRetcode();
+                        resp.getRetmsg();
+                    }
                 }
+
                 return JsonResult.ok("新增成功");
             } else {
                 return JsonResult.error("新增失败");
