diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/form/StaffListFormDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/form/StaffListFormDTO.java index 4de304f917..6be616d569 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/form/StaffListFormDTO.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/form/StaffListFormDTO.java @@ -36,6 +36,10 @@ public class StaffListFormDTO implements Serializable { * 工作人员姓名;可空 */ private String staffName; + /** + * 工作人员Id + */ + private String staffId; /** * 页码 * */ diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/CustomerStaffDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/CustomerStaffDao.java index b3ca304972..3e96cbcc26 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/CustomerStaffDao.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/CustomerStaffDao.java @@ -23,6 +23,8 @@ import com.epmet.dataaggre.entity.epmetuser.CustomerStaffEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** * 政府工作人员表 * @@ -37,4 +39,9 @@ public interface CustomerStaffDao extends BaseDao { * @author sun */ CustomerStaffDTO selectByMobile(@Param("customerId") String customerId, @Param("mobile") String mobile); + /** + * @Description 按staffId查询基础信息 + * @author sun + */ + List selectByStaffIds(@Param("staffIds") List staffIds, @Param("realName") String realName); } \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java index 281f24cc6d..cf7aef270e 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java @@ -25,11 +25,11 @@ import com.epmet.dataaggre.service.epmetuser.StaffPatrolRecordService; import com.epmet.dataaggre.service.govorg.GovOrgService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.math.BigDecimal; import java.text.NumberFormat; import java.util.*; import java.util.stream.Collectors; @@ -274,10 +274,31 @@ public class EpmetUserServiceImpl implements EpmetUserService { formDTO.setPageNo(pageIndex); //起始查询日期 formDTO.setPatrolStartTime(DateUtils.getBeforeMonthDate(formDTO.getTime(), "yyyyMMdd")); + List staffList = new ArrayList<>(); + //2-1.按名字检索时先查询人员基础信息 + if (StringUtils.isEmpty(formDTO.getStaffName())) { + staffList = customerStaffDao.selectByStaffIds(null, formDTO.getStaffName()); + if (!CollectionUtils.isEmpty(staffList)) { + formDTO.setStaffId(staffList.get(0).getUserId()); + } + } + //2-2.查询业务数据 resultList = staffPatrolRecordDao.selectStaffPatrolList(formDTO); + //2-3.查询人员基本信息【之前sql关联人员表查性别、姓名效率低 所以分开查) + if (!CollectionUtils.isEmpty(staffList)) { + List staffIdList = resultList.stream().map(StaffListResultDTO::getStaffId).collect(Collectors.toList()); + staffList = customerStaffDao.selectByStaffIds(staffIdList, null); + } //3.封装数据并返回 - resultList.forEach(re -> list.stream().filter(l -> re.getGridId().equals(l.getId())).forEach(s -> re.setGridName(s.getGridName()))); + List finalStaffList = staffList; + resultList.forEach(re -> { + list.stream().filter(l -> re.getGridId().equals(l.getId())).forEach(s -> re.setGridName(s.getGridName())); + finalStaffList.stream().filter(l -> re.getStaffId().equals(l.getUserId())).forEach(s -> { + re.setGender(s.getGender().toString()); + re.setStaffName(s.getRealName()); + }); + }); //NumberFormat numberFormat = NumberFormat.getInstance(); //numberFormat.setMaximumFractionDigits(NumConstant.ZERO); resultList.forEach(re -> { diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/CustomerStaffDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/CustomerStaffDao.xml index 3b1b0c9db3..0e06223aa7 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/CustomerStaffDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/CustomerStaffDao.xml @@ -15,4 +15,20 @@ LIMIT 1 + + \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StaffPatrolRecordDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StaffPatrolRecordDao.xml index 57fb814737..9f0fd1fe74 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StaffPatrolRecordDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StaffPatrolRecordDao.xml @@ -59,8 +59,8 @@ SELECT ssp.grid_id AS gridId, ssp.staff_id AS staffId, - cs.real_name AS staffName, - cs.gender AS gender, + IFNULL(MAX(ssp.latest_patrol_time), '') AS patrolStartTime, IFNULL(SUM(ssp.patrol_total), 0) AS patrolTotal, MAX(DATE_ID) dateId, @@ -68,12 +68,15 @@ IFNULL(SUM(ssp.total_time), 0) AS timeNum FROM stats_staff_patrol_record_daily ssp - LEFT JOIN customer_staff cs ON ssp.staff_id = cs.user_id + WHERE ssp.del_flag = '0' AND ssp.date_id >= #{patrolStartTime} - + + + AND ssp.staff_id = #{staffId}