Selaa lähdekoodia

参会人员编辑完善。

zhengqiang 4 vuotta sitten
vanhempi
commit
ae1b25447a

+ 1 - 0
common/src/main/java/com/jpsoft/shinestar/modules/base/dao/MeetingPersonDAO.java

@@ -22,4 +22,5 @@ public interface MeetingPersonDAO {
     List<Map> realToSearch(Map<String, Object> searchParams, List<Sort> sortList);
 	List<MeetingPerson> absentSearch(Map<String, Object> searchParams, List<Sort> sortList);
 	List<Map> lateSearch(Map<String, Object> searchParams, List<Sort> sortList);
+    int deleteByMeetingId(String meetingId);
 }

+ 38 - 21
common/src/main/java/com/jpsoft/shinestar/modules/base/service/impl/MeetingInfoServiceImpl.java

@@ -1,8 +1,6 @@
 package com.jpsoft.shinestar.modules.base.service.impl;
 
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
+import java.util.*;
 import javax.annotation.Resource;
 
 import com.jpsoft.shinestar.modules.base.dao.MeetingAddressDAO;
@@ -201,30 +199,49 @@ public class MeetingInfoServiceImpl implements MeetingInfoService {
 				meetingTimeDAO.insert(meetingTime);
 			}
 
+			//原参会人员
+			List<MeetingPerson> meetingPersonList = meetingPersonDAO.findByMeetingId(model.getId());
 
+			//新参会人员
+			Set<Long> selectPersonSet = new HashSet<>();
 
-			//人员相关
-			List<MeetingPerson> meetingPersonList = meetingPersonDAO.findByMeetingId(model.getId());
+			if(StringUtils.isNotEmpty(model.getSelectPersonKey())) {
+				String[] selectPersonKeyArray = model.getSelectPersonKey().split(",");
+
+				for (String key : selectPersonKeyArray) {
+					selectPersonSet.add(Long.valueOf(key));
+				}
+			}
+
+			Set<Long> meetingPersonSet = new HashSet<>();
 
-			//先删除原绑定人员
-			for (MeetingPerson meetingPerson:meetingPersonList) {
-				meetingPerson.setDelFlag(true);
-				meetingPerson.setUpdateBy(model.getUpdateBy());
-				meetingPerson.setUpdateTime(model.getUpdateTime());
-				meetingPersonDAO.update(meetingPerson);
+			for (MeetingPerson meetingPerson : meetingPersonList) {
+				//原先参会人员被删除
+				if(!selectPersonSet.contains(meetingPerson.getPersonId())){
+					meetingPerson.setDelFlag(true);
+					meetingPerson.setUpdateBy(model.getUpdateBy());
+					meetingPerson.setUpdateTime(model.getUpdateTime());
+					meetingPersonDAO.update(meetingPerson);
+				}
+				else {
+					//当前参会人员
+					meetingPersonSet.add(meetingPerson.getPersonId());
+				}
 			}
 
 			if(StringUtils.isNotEmpty(model.getSelectPersonKey())){
-				String[] selectPersonKeyArray = model.getSelectPersonKey().split(",");
-				for (String key :selectPersonKeyArray) {
-					MeetingPerson meetingPerson = new MeetingPerson();
-					meetingPerson.setId(UUID.randomUUID().toString());
-					meetingPerson.setCreateBy(model.getCreateBy());
-					meetingPerson.setCreateTime(model.getCreateTime());
-					meetingPerson.setDelFlag(false);
-					meetingPerson.setPersonId(Long.parseLong(key));
-					meetingPerson.setMeetingInfoId(model.getId());
-					meetingPersonDAO.insert(meetingPerson);
+				for (Long personId : selectPersonSet) {
+					//新参会人员
+					if(!meetingPersonSet.contains(personId)) {
+						MeetingPerson meetingPerson = new MeetingPerson();
+						meetingPerson.setId(UUID.randomUUID().toString());
+						meetingPerson.setCreateBy(model.getCreateBy());
+						meetingPerson.setCreateTime(model.getCreateTime());
+						meetingPerson.setDelFlag(false);
+						meetingPerson.setPersonId(personId);
+						meetingPerson.setMeetingInfoId(model.getId());
+						meetingPersonDAO.insert(meetingPerson);
+					}
 				}
 			}
 

+ 5 - 0
common/src/main/resources/mapper/base/MeetingPerson.xml

@@ -44,6 +44,11 @@
     <delete id="delete" parameterType="string">
         delete from base_meeting_person where id_=#{id,jdbcType=VARCHAR}
     </delete>
+    <update id="deleteByMeetingId">
+        update base_meeting_person set del_flag=1
+        where
+        meetingInfo_id=#{meetingId,jdbcType=VARCHAR}
+    </update>
     <update id="update" parameterType="com.jpsoft.shinestar.modules.base.entity.MeetingPerson">
         update base_meeting_person
         <set>

+ 3 - 3
web/src/main/java/com/jpsoft/shinestar/mq/listener/PersonNotificationListener.java

@@ -87,17 +87,17 @@ public class PersonNotificationListener {
 
             List<String> sceneNameList = deviceInfoService.findSceneListByDeviceNo(notification.getDeviceNo());
 
-            if(sceneNameList.contains("考勤")) {
+            if(sceneNameList.stream().filter((scene)->scene.contains("考勤")).count()>0){
                 workScheduleAttendanceService.punchIn(notification.getDeviceNo(), personInfo.getId(),
                         notification.getTemperature(),
                         notification.getRecordTime());
             }
 
-            if(sceneNameList.contains("食堂")){
+            if(sceneNameList.stream().filter((scene)->scene.contains("食堂")).count()>0){
                 canteenDiningRecordService.punchIn(notification.getDeviceNo(), personInfo.getId(), notification.getRecordTime());
             }
 
-            if(sceneNameList.contains("会议")){
+            if(sceneNameList.stream().filter((scene)->scene.contains("会议")).count()>0){
                 meetingPersonRecodeService.punchIn(notification.getDeviceNo(), personInfo.getId(), notification.getRecordTime());
             }