Kaynağa Gözat

Merge remote-tracking branch 'origin/master'

yanliming 4 yıl önce
ebeveyn
işleme
41d9ce1c5c

+ 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);
 }

+ 2 - 0
common/src/main/java/com/jpsoft/shinestar/modules/base/entity/MeetingPerson.java

@@ -24,4 +24,6 @@ public class MeetingPerson {
 	private Boolean delFlag;
 	private Date signTime;
 	private String signType;
+	private String personName;
+	private String companyName;
 }

+ 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);
+					}
 				}
 			}
 

+ 15 - 1
common/src/main/resources/mapper/base/MeetingPerson.xml

@@ -14,6 +14,8 @@
         <result property="signTime" column="sign_time"/>
         <result property="delFlag" column="del_flag"/>
         <result property="signType" column="sign_type"/>
+        <result property="personName" column="person_name"/>
+        <result property="companyName" column="company_name"/>
     </resultMap>
     <insert id="insert" parameterType="com.jpsoft.shinestar.modules.base.entity.MeetingPerson">
         <!--
@@ -42,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>
@@ -85,7 +92,14 @@
         select * from base_meeting_person
     </select>
     <select id="findByMeetingId" resultMap="MeetingPersonMap">
-        select * from base_meeting_person where del_flag=false and meetingInfo_id=#{0}
+        select a.*,
+        b.name_ as person_name,
+        c.name_ as company_name
+        from base_meeting_person a
+        inner join base_person_info b on a.person_id = b.id_
+        inner join base_company_info c on b.company_id = c.id_
+        where a.del_flag=false
+        and a.meetingInfo_id=#{0}
     </select>
     <select id="findByMeetingIdAndPersonId" resultMap="MeetingPersonMap">
         select * from base_meeting_person where del_flag=false and meetingInfo_id = #{meetingId} and person_id =

+ 17 - 18
web/src/main/java/com/jpsoft/shinestar/modules/base/controller/MeetingInfoController.java

@@ -184,24 +184,23 @@ public class MeetingInfoController {
                 List<MeetingPersonDTO> dtoList = new ArrayList<>();
 
                 for (MeetingPerson meetingPerson:list) {
-                    selectPersonKey += String.valueOf(meetingPerson.getPersonId())+",";
-
-                    PersonInfo personInfo = personInfoService.get(meetingPerson.getPersonId());
-
-                    if(personInfo!=null) {
-                        CompanyInfo companyInfo = companyInfoService.get(personInfo.getCompanyId());
-                        String companyName="";
-
-                        if(companyInfo!=null){
-                            companyName = "-"+companyInfo.getName();
-                        }
-
-                        MeetingPersonDTO dto = new MeetingPersonDTO();
-                        dto.setKey(personInfo.getId().toString());
-                        dto.setLabel(personInfo.getName()+ companyName);
-
-                        dtoList.add(dto);
-                    }
+                    selectPersonKey += meetingPerson.getPersonId() + ",";
+
+                    MeetingPersonDTO dto = new MeetingPersonDTO();
+                    dto.setKey(meetingPerson.getPersonId().toString());
+                    dto.setLabel(meetingPerson.getPersonName() + "-" + meetingPerson.getCompanyName());
+
+                    dtoList.add(dto);
+//                    PersonInfo personInfo = personInfoService.get(meetingPerson.getPersonId());
+//
+//                    if(personInfo!=null) {
+//                        CompanyInfo companyInfo = companyInfoService.get(personInfo.getCompanyId());
+//                        String companyName="";
+//
+//                        if(companyInfo!=null){
+//                            companyName = "-"+companyInfo.getName();
+//                        }
+//                    }
                 }
 
                 if(StringUtils.isNotEmpty(selectPersonKey)){

+ 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());
             }