Browse Source

灵山大屏中央一波代码。还大屏上代办员的代办列表接口没写,明天写

master
wxz 2 years ago
parent
commit
929189c56f
  1. 21
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/LingShanScreenAgentRstDTO.java
  2. 4
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/LingshanServiceAgentAgentList.java
  3. 49
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/feign/DataAggregatorOpenFeignClient.java
  4. 16
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/feign/impl/DataAggregatorOpenFeignClientFallback.java
  5. 32
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/LingShanServiceAgentController.java
  6. 10
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/CustomerStaffDao.java
  7. 6
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/LingShanServiceAgentService.java
  8. 2
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/EpmetUserService.java
  9. 20
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java
  10. 3
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgService.java
  11. 18
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java
  12. 137
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/impl/LingShanServiceAgentServiceImpl.java
  13. 19
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/CustomerStaffDao.xml
  14. 1
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerStaffGridDao.xml
  15. 21
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/agentservice/LingShanScreenAgentRstDTO.java
  16. 20
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/agentservice/LingShanScreenServiceRstDTO.java
  17. 22
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/agentservice/ScreenCatalogueQtyStatsRstDTO.java
  18. 56
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/LingShanAgentServiceController.java
  19. 13
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/LingshanAgentServiceRecordDao.java
  20. 11
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/LingShanAgentServiceService.java
  21. 176
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/LingShanAgentServiceServiceImpl.java
  22. 22
      epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/LingshanAgentServiceRecordDao.xml

21
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/LingShanScreenAgentRstDTO.java

@ -0,0 +1,21 @@
package com.epmet.dataaggre.dto.epmetuser.result;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Description 灵山代办员信息
* @Author wangxianzhang
* @Time 2023/5/15 2:57 PM
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class LingShanScreenAgentRstDTO {
private String agentName;
private String longitude;
private String latitude;
private String mobile;
}

4
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/LingshanServiceAgentAgentList.java

@ -22,4 +22,8 @@ public class LingshanServiceAgentAgentList {
private String mobile;
private String idCard;
private String longitude;
private String latitude;
}

49
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/feign/DataAggregatorOpenFeignClient.java

@ -5,13 +5,16 @@ import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dataaggre.dto.epmetuser.form.ResisByPolicyRulesFormDTO;
import com.epmet.dataaggre.dto.epmetuser.result.LingshanServiceAgentAgentList;
import com.epmet.dataaggre.dto.epmetuser.result.ResiByPolicyInfoResultDTO;
import com.epmet.dataaggre.dto.govorg.form.GridLivelyFormDTO;
import com.epmet.dataaggre.dto.govorg.result.GridLivelyResultDTO;
import com.epmet.dataaggre.feign.impl.DataAggregatorOpenFeignClientFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
@ -40,4 +43,50 @@ public interface DataAggregatorOpenFeignClient {
*/
@PostMapping(value = "data/aggregator/org/gridlively")
Result<List<GridLivelyResultDTO>> grdiLively(@RequestBody GridLivelyFormDTO form);
/**
* @description: 工作端pc代办员列表
* @param pageNo:
* @param pageSize:
* @param orgId:
* @param orgType:
* @param agentName:
* @param mobile:
* @param idCard:
* @return
* @author: WangXianZhang
* @date: 2023/5/9 4:30 PM
*/
@GetMapping("data/aggregator/lingshan/serviceAgent/workpc/agentList")
Result<PageData<LingshanServiceAgentAgentList>> workPcAgentList(@RequestParam("pageNo") Integer pageNo,
@RequestParam("pageSize") Integer pageSize,
@RequestParam(value = "orgId", required = false) String orgId,
@RequestParam(value = "orgType", required = false) String orgType,
@RequestParam(value = "agentName",required = false) String agentName,
@RequestParam(value = "mobile", required = false) Integer mobile,
@RequestParam(value = "idCard", required = false) Integer idCard);
/**
* @Description: 大屏-代办员数量
* @param orgId:
* @param orgType:
* @Return com.epmet.commons.tools.utils.Result<java.lang.Integer>
* @Author: wangxianzhang
* @Date: 2023/5/15 10:29 AM
*/
@GetMapping("data/aggregator/lingshan/serviceAgent/screen/agentQty")
Result<Integer> lingshanScreenAgentQty(@RequestParam(value = "orgId", required = false) String orgId,
@RequestParam(value = "orgType", required = false) String orgType);
/**
* @Description: 大屏代办员列表
* @param orgId:
* @param orgType:
* @Return com.epmet.commons.tools.utils.Result<com.epmet.commons.tools.page.PageData<com.epmet.dataaggre.dto.epmetuser.result.LingshanServiceAgentAgentList>>
* @Author: wangxianzhang
* @Date: 2023/5/15 4:57 PM
*/
@GetMapping("data/aggregator/lingshan/serviceAgent/screen/agentList")
Result<List<LingshanServiceAgentAgentList>> screenAgentList(@RequestParam(value = "orgId", required = false) String orgId,
@RequestParam(value = "orgType", required = false) String orgType);
}

16
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/feign/impl/DataAggregatorOpenFeignClientFallback.java

@ -5,6 +5,7 @@ import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ModuleUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dataaggre.dto.epmetuser.form.ResisByPolicyRulesFormDTO;
import com.epmet.dataaggre.dto.epmetuser.result.LingshanServiceAgentAgentList;
import com.epmet.dataaggre.dto.epmetuser.result.ResiByPolicyInfoResultDTO;
import com.epmet.dataaggre.dto.govorg.form.GridLivelyFormDTO;
import com.epmet.dataaggre.dto.govorg.result.GridLivelyResultDTO;
@ -32,4 +33,19 @@ public class DataAggregatorOpenFeignClientFallback implements DataAggregatorOpen
public Result<List<GridLivelyResultDTO>> grdiLively(GridLivelyFormDTO form) {
return ModuleUtils.feignConError(ServiceConstant.DATA_AGGREGATOR_SERVER, "grdiLively",form);
}
@Override
public Result<Integer> lingshanScreenAgentQty(String orgId, String orgType) {
return ModuleUtils.feignConError(ServiceConstant.DATA_AGGREGATOR_SERVER, "lingshanScreenAgentQty",orgId, orgType);
}
@Override
public Result<PageData<LingshanServiceAgentAgentList>> workPcAgentList(Integer pageNo, Integer pageSize, String orgId, String orgType, String agentName, Integer mobile, Integer idCard) {
return ModuleUtils.feignConError(ServiceConstant.DATA_AGGREGATOR_SERVER, "workPcAgentList",pageNo, pageSize, orgId, orgType, agentName, mobile, idCard);
}
@Override
public Result<List<LingshanServiceAgentAgentList>> screenAgentList(String orgId, String orgType) {
return ModuleUtils.feignConError(ServiceConstant.DATA_AGGREGATOR_SERVER, "screenAgentList", orgId, orgType);
}
}

32
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/LingShanServiceAgentController.java

@ -10,6 +10,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("lingshan/serviceAgent")
public class LingShanServiceAgentController {
@ -43,4 +45,34 @@ public class LingShanServiceAgentController {
return new Result<PageData<LingshanServiceAgentAgentList>>().ok(pd);
}
/**
* @Description: 大屏-代办员数量
* @param orgId:
* @param orgType:
* @Return com.epmet.commons.tools.utils.Result<java.lang.Integer>
* @Author: wangxianzhang
* @Date: 2023/5/15 10:29 AM
*/
@GetMapping("screen/agentQty")
public Result<Integer> lingshanScreenAgentQty(@RequestParam(value = "orgId", required = false) String orgId,
@RequestParam(value = "orgType", required = false) String orgType) {
return new Result<Integer>().ok(lingShanServiceAgentService.lingshanScreenAgentQty(orgId, orgType));
}
/**
* @Description: 大屏代办员列表
* @param orgId:
* @param orgType:
* @Return com.epmet.commons.tools.utils.Result<com.epmet.commons.tools.page.PageData<com.epmet.dataaggre.dto.epmetuser.result.LingshanServiceAgentAgentList>>
* @Author: wangxianzhang
* @Date: 2023/5/15 4:57 PM
*/
@GetMapping("screen/agentList")
public Result<List<LingshanServiceAgentAgentList>> screenAgentList(@RequestParam(value = "orgId", required = false) String orgId,
@RequestParam(value = "orgType", required = false) String orgType) {
List<LingshanServiceAgentAgentList> rl = lingShanServiceAgentService.screenAgentList(orgId, orgType);
return new Result<List<LingshanServiceAgentAgentList>>().ok(rl);
}
}

10
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/CustomerStaffDao.java

@ -101,4 +101,14 @@ public interface CustomerStaffDao extends BaseDao<CustomerStaffEntity> {
@Param("mobile") Integer mobile,
@Param("realname") String realname,
@Param("idCard") Integer idCard);
/**
* @Description: 查询网格下具有某角色的工作人员数量
* @param staffIds:
* @param roleId:
* @Return java.lang.Integer
* @Author: wangxianzhang
* @Date: 2023/5/15 11:21 AM
*/
Integer countStaffQtyByStaffIdsAndRole(@Param("staffIds") Set<String> staffIds, @Param("roleId") String roleId);
}

6
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/LingShanServiceAgentService.java

@ -3,6 +3,12 @@ package com.epmet.dataaggre.service;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dataaggre.dto.epmetuser.result.LingshanServiceAgentAgentList;
import java.util.List;
public interface LingShanServiceAgentService {
PageData<LingshanServiceAgentAgentList> workPcAgentList(String orgId, String orgType, String agentName, Integer mobile, Integer idCard, Integer pageNo, Integer pageSize);
Integer lingshanScreenAgentQty(String orgId, String orgType);
List<LingshanServiceAgentAgentList> screenAgentList(String orgId, String orgType);
}

2
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/EpmetUserService.java

@ -267,4 +267,6 @@ public interface EpmetUserService {
PageData<StaffInfoInGridOfRole> staffListInGridsOfRole(String roleKey, Set<String> staffIds, String agentName, Integer mobile, Integer idCard,
Integer pageNo, Integer pageSize);
Integer staffQtyInGridsOfRole(String roleKeyAgent, Set<String> staffIds);
}

20
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java

@ -1155,8 +1155,13 @@ public class EpmetUserServiceImpl implements EpmetUserService, ResultDataResolve
public PageData<StaffInfoInGridOfRole> staffListInGridsOfRole(String roleKey, Set<String> staffIds, String agentName, Integer mobile,
Integer idCard, Integer pageNo, Integer pageSize) {
String customerId;
if (StringUtils.isBlank(customerId = EpmetRequestHolder.getLoginUserCustomerId())) {
throw new EpmetException(EpmetErrorCode.ERR10005.getCode());
}
LambdaQueryWrapper<GovStaffRoleEntity> rq = new LambdaQueryWrapper<>();
rq.eq(GovStaffRoleEntity::getCustomerId, EpmetRequestHolder.getLoginUserCustomerId());
rq.eq(GovStaffRoleEntity::getCustomerId, customerId);
rq.eq(GovStaffRoleEntity::getRoleKey, roleKey);
GovStaffRoleEntity role = govStaffRoleDao.selectOne(rq);
if (role == null) {
@ -1169,4 +1174,17 @@ public class EpmetUserServiceImpl implements EpmetUserService, ResultDataResolve
return new PageData<>(ss, new PageInfo<>(ss).getTotal());
}
@Override
public Integer staffQtyInGridsOfRole(String roleKey, Set<String> staffIds) {
LambdaQueryWrapper<GovStaffRoleEntity> rq = new LambdaQueryWrapper<>();
rq.eq(GovStaffRoleEntity::getCustomerId, EpmetRequestHolder.getLoginUserCustomerId());
rq.eq(GovStaffRoleEntity::getRoleKey, roleKey);
GovStaffRoleEntity role = govStaffRoleDao.selectOne(rq);
if (role == null) {
return 0;
}
return customerStaffDao.countStaffQtyByStaffIdsAndRole(staffIds, role.getId());
}
}

3
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgService.java

@ -14,6 +14,7 @@ import com.epmet.dataaggre.dto.govorg.form.*;
import com.epmet.dataaggre.dto.govorg.result.*;
import com.epmet.dataaggre.dto.resigroup.result.OrgInfoCommonDTO;
import com.epmet.dataaggre.entity.govorg.CustomerAgencyEntity;
import com.epmet.dataaggre.entity.govorg.CustomerGridEntity;
import com.epmet.dto.IcNeighborHoodDTO;
import javax.servlet.http.HttpServletResponse;
@ -306,4 +307,6 @@ public interface GovOrgService {
List<LingShanAgentServiceStaffAndGrid> getStaffAndItsBelongsGridByAgencyIdPath(String agencyIdPath);
Set<String> getStaffIdsInGrid(String gridId);
List<CustomerGridEntity> listBelongGridsByStaffId(String staffId);
}

18
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java

@ -1554,4 +1554,22 @@ public class GovOrgServiceImpl implements GovOrgService {
List<CustomerStaffGridEntity> es = customerStaffGridDao.selectList(q);
return es.stream().map(CustomerStaffGridEntity::getUserId).collect(Collectors.toSet());
}
/**
* @Description: 一个人多个网格根据工作人员id查询所属网格id
* @param staffId:
* @Return java.util.List<com.epmet.dataaggre.entity.govorg.CustomerStaffGridEntity>
* @Author: wangxianzhang
* @Date: 2023/5/15 4:39 PM
*/
@Override
public List<CustomerGridEntity> listBelongGridsByStaffId(String staffId) {
LambdaQueryWrapper<CustomerStaffGridEntity> q = new LambdaQueryWrapper<>();
q.eq(CustomerStaffGridEntity::getUserId, staffId);
List<CustomerStaffGridEntity> staffAndGrids = customerStaffGridDao.selectList(q);
LambdaQueryWrapper<CustomerGridEntity> q2 = new LambdaQueryWrapper<>();
q2.in(CustomerGridEntity::getId, staffAndGrids.stream().map(CustomerStaffGridEntity::getGridId).collect(Collectors.toList()));
return customerGridDao.selectList(q2);
}
}

137
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/impl/LingShanServiceAgentServiceImpl.java

@ -1,5 +1,6 @@
package com.epmet.dataaggre.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.enums.DictTypeEnum;
import com.epmet.commons.tools.enums.GenderEnum;
@ -14,7 +15,11 @@ import com.epmet.constant.OrgInfoConstant;
import com.epmet.constant.RoleKeyConstants;
import com.epmet.dataaggre.beans.LingShanAgentServiceStaffAndGrid;
import com.epmet.dataaggre.beans.StaffInfoInGridOfRole;
import com.epmet.dataaggre.dao.govorg.CustomerGridDao;
import com.epmet.dataaggre.dao.govorg.CustomerStaffGridDao;
import com.epmet.dataaggre.dto.epmetuser.result.LingshanServiceAgentAgentList;
import com.epmet.dataaggre.entity.govorg.CustomerGridEntity;
import com.epmet.dataaggre.entity.govorg.CustomerStaffGridEntity;
import com.epmet.dataaggre.service.LingShanServiceAgentService;
import com.epmet.dataaggre.service.epmetuser.EpmetUserService;
import com.epmet.dataaggre.service.govorg.GovOrgService;
@ -24,12 +29,13 @@ import com.epmet.feign.EpmetAdminOpenFeignClient;
import com.epmet.remote.EpmetUserRemoteService;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.sql.Array;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@Service
public class LingShanServiceAgentServiceImpl implements LingShanServiceAgentService, ResultDataResolver {
@ -46,22 +52,17 @@ public class LingShanServiceAgentServiceImpl implements LingShanServiceAgentServ
@Autowired
private EpmetUserRemoteService epmetUserRemoteService;
@Override
public PageData<LingshanServiceAgentAgentList> workPcAgentList(String orgId, String orgType, String agentName, Integer mobile, Integer idCard,
Integer pageNo, Integer pageSize) {
// 1个人可能属于多个wangge
Map<String, List<String>> staffIdAndGridIds = new HashMap<>();
Set<String> staffIds = new HashSet<>();
if (StringUtils.isAnyBlank(orgId, orgType)) {
// 如果前端没选择,那就取当前工作人员所属组织
LoginUserDetailsResultDTO loginUserDetails = epmetUserRemoteService.getLoginUserDetails();
orgId = loginUserDetails.getAgencyId();
orgType = OrgInfoConstant.AGENCY;
}
// 得到staffIds和staffIdAndGridIds
/**
* @Description: 填充
* @param orgId:
* @param orgType:
* @param staffIdAndGridIds:
* @param staffIds:
* @Return void
* @Author: wangxianzhang
* @Date: 2023/5/15 10:33 AM
*/
private void fillDatas4AgentQuery(String orgId, String orgType, Map<String, List<String>> staffIdAndGridIds, Set<String> staffIds) {
if (OrgInfoConstant.AGENCY.equals(orgType)) {
// agency
AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(orgId);
@ -84,6 +85,27 @@ public class LingShanServiceAgentServiceImpl implements LingShanServiceAgentServ
staffIdAndGridIds.put(staffId, Arrays.asList(orgId));
}
}
}
@Override
public PageData<LingshanServiceAgentAgentList> workPcAgentList(String orgId, String orgType, String agentName, Integer mobile, Integer idCard,
Integer pageNo, Integer pageSize) {
// 1个人可能属于多个网格,这里用来给页面显示多个网格,逗号分割
Map<String, List<String>> staffIdAndGridIds = new HashMap<>();
// 用来进一步查询工作人员
Set<String> staffIds = new HashSet<>();
if (StringUtils.isAnyBlank(orgId, orgType)) {
// 如果前端没选择,那就取当前工作人员所属组织
LoginUserDetailsResultDTO loginUserDetails = epmetUserRemoteService.getLoginUserDetails();
orgId = loginUserDetails.getAgencyId();
orgType = OrgInfoConstant.AGENCY;
}
// 得到staffIds和staffIdAndGridIds
fillDatas4AgentQuery(orgId, orgType, staffIdAndGridIds, staffIds);
// 开始查询staff列表
PageData<StaffInfoInGridOfRole> pd = epmetUserService.staffListInGridsOfRole(RoleKeyConstants.ROLE_KEY_AGENT, staffIds, agentName, mobile, idCard, pageNo, pageSize);
@ -137,5 +159,86 @@ public class LingShanServiceAgentServiceImpl implements LingShanServiceAgentServ
return String.join(",", orgNames);
}
@Override
public Integer lingshanScreenAgentQty(String orgId, String orgType) {
// 1个人可能属于多个wangge
Map<String, List<String>> staffIdAndGridIds = new HashMap<>();
Set<String> staffIds = new HashSet<>();
if (StringUtils.isAnyBlank(orgId, orgType)) {
// 如果前端没选择,那就取当前工作人员所属组织
LoginUserDetailsResultDTO loginUserDetails = epmetUserRemoteService.getLoginUserDetails();
orgId = loginUserDetails.getAgencyId();
orgType = OrgInfoConstant.AGENCY;
}
// 得到staffIds和staffIdAndGridIds
fillDatas4AgentQuery(orgId, orgType, staffIdAndGridIds, staffIds);
// 开始查询staff列表
return epmetUserService.staffQtyInGridsOfRole(RoleKeyConstants.ROLE_KEY_AGENT, staffIds);
}
@Override
public List<LingshanServiceAgentAgentList> screenAgentList(String orgId, String orgType) {
// 1个人可能属于多个wangge
Map<String, List<String>> staffIdAndGridIds = new HashMap<>();
Set<String> staffIds = new HashSet<>();
if (StringUtils.isAnyBlank(orgId, orgType)) {
// 如果前端没选择,那就取当前工作人员所属组织
LoginUserDetailsResultDTO loginUserDetails = epmetUserRemoteService.getLoginUserDetails();
orgId = loginUserDetails.getAgencyId();
orgType = OrgInfoConstant.AGENCY;
}
fillDatas4AgentQuery(orgId, orgType, staffIdAndGridIds, staffIds);
// 开始查询staff列表
PageData<StaffInfoInGridOfRole> staffPage = epmetUserService.staffListInGridsOfRole(RoleKeyConstants.ROLE_KEY_AGENT, staffIds,
null, null, null, 1, Integer.MAX_VALUE);
if (staffPage == null) {
return new ArrayList();
}
// 性别&教育字典
List<SysDictDataDTO> edus = getResultDataOrReturnNull(adminOpenFeignClient.dictDataList(DictTypeEnum.EDUCATION.getCode()), ServiceConstant.EPMET_ADMIN_SERVER);
Map<String, String> eduMap = edus.stream().collect(Collectors.toMap(SysDictDataDTO::getDictValue, SysDictDataDTO::getDictLabel));
// 转换为dto
List<LingshanServiceAgentAgentList> rl = staffPage.getList().stream().map(e -> {
LingshanServiceAgentAgentList d = new LingshanServiceAgentAgentList();
d.setAgentName(e.getStaffName());
d.setAgentId(e.getStaffId());
d.setGender(e.getGender());
d.setGenderDisplay(GenderEnum.getName(e.getGender().toString()));
d.setAge(e.getAge());
d.setCulture(e.getCulture());
if (e.getCulture() != null) {
d.setCultureDisplay(eduMap.get(e.getCulture().toString()));
}
d.setMobile(e.getMobile());
d.setIdCard(e.getIdCard());
// 组织名称
return d;
}).collect(Collectors.toList());
// 展开工作人员与网格的对应关系,开始赋值坐标,坐标使用所属网格的坐标,但是一个工作人员可能属于多个网格,有几个网格就复制出来几条工作人员信息,内容重复即可。
List<LingshanServiceAgentAgentList> finalAgentList = rl.stream().flatMap(agent -> {
List<String> gridIdsOfAgent = staffIdAndGridIds.get(agent.getAgentId());
return gridIdsOfAgent.stream().map(gridId -> {
GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(gridId);
LingshanServiceAgentAgentList newOne = ConvertUtils.sourceToTarget(agent, LingshanServiceAgentAgentList.class);
newOne.setLatitude(gridInfo.getLatitude());
newOne.setLongitude(gridInfo.getLongitude());
newOne.setGridId(gridId);
newOne.setOrgNamePath(gridInfo.getGridNamePath());
return newOne;
});
}).collect(Collectors.toList());
return finalAgentList;
}
}

19
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/CustomerStaffDao.xml

@ -164,6 +164,7 @@
</foreach>
</select>
<!--查询网格下具有指定角色的工作人员列表-->
<select id="selectStaffListByStaffIdsAndRole" resultType="com.epmet.dataaggre.beans.StaffInfoInGridOfRole">
select sr.STAFF_ID staffId
, s.REAL_NAME staffName
@ -194,4 +195,22 @@
and s.ID_CARD like CONCAT('%',#{idCard},'%')
</if>
</select>
<!--查询网格下具有某角色的工作人员数量-->
<select id="countStaffQtyByStaffIdsAndRole"
resultType="java.lang.Integer">
select count(*)
from staff_role sr
inner join customer_staff s on (s.DEL_FLAG = 0 and sr.STAFF_ID = s.USER_ID)
where sr.DEL_FLAG = 0
<if test="staffIds != null and staffIds.size() > 0">
and sr.STAFF_ID in
<foreach collection="staffIds" item="staffId" open="(" separator="," close=")">
#{staffId}
</foreach>
</if>
<if test="roleId != null and roleId != ''">
and sr.ROLE_ID = #{roleId}
</if>
</select>
</mapper>

1
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerStaffGridDao.xml

@ -69,6 +69,7 @@
</select>
<!--一个工作人员可能属于同一个agencyId下的多个grid-->
<select id="getStaffAndItsBelongsGridByAgencyIdPath" resultType="com.epmet.dataaggre.beans.LingShanAgentServiceStaffAndGrid">
select g.ID gridId, sg.USER_ID staffId
from customer_grid g

21
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/agentservice/LingShanScreenAgentRstDTO.java

@ -0,0 +1,21 @@
package com.epmet.dto.result.agentservice;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class LingShanScreenAgentRstDTO {
private String gridId;
private String agentId;
private String agentName;
private String longitude;
private String latitude;
private String mobile;
private Integer unClosedServiceQty;
private Integer closedServiceQty;
}

20
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/agentservice/LingShanScreenServiceRstDTO.java

@ -0,0 +1,20 @@
package com.epmet.dto.result.agentservice;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class LingShanScreenServiceRstDTO {
private String content;
private String applicantName;
private String applicantMobile;
private String applicantHomeAddress;
private Date createdTime;
private String agentName;
private String agentMobile;
}

22
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/agentservice/ScreenCatalogueQtyStatsRstDTO.java

@ -0,0 +1,22 @@
package com.epmet.dto.result.agentservice;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Description
* @Author wangxianzhang
* @Time 2023/5/15 10:09 AM
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ScreenCatalogueQtyStatsRstDTO {
// agent service_unclosed service_closed
private String dataType;
private String name;
private Integer qty = 0;
}

56
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/LingShanAgentServiceController.java

@ -10,10 +10,7 @@ import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.form.agentservice.WorkCloseAgentServiceFormDTO;
import com.epmet.dto.form.lingshan.AgentServiceResiSubmitFormDTO;
import com.epmet.dto.result.agentservice.AgentServiceList4WorkPcResultDTO;
import com.epmet.dto.result.agentservice.LingShanAgentServiceCategoryResultDTO;
import com.epmet.dto.result.agentservice.ResiMyCreatedAgentServiceResultDTO;
import com.epmet.dto.result.agentservice.WorkServiceAgentResultDTO;
import com.epmet.dto.result.agentservice.*;
import com.epmet.service.LingShanAgentServiceService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
@ -237,4 +234,55 @@ public class LingShanAgentServiceController {
return new Result<PageData<AgentServiceList4WorkPcResultDTO>>().ok(pd);
}
/**
* @Description: 大屏中央红色待办选择目录带数量
* @param orgId:
* @param orgType:
* @Return com.epmet.commons.tools.utils.Result
* @Author: wangxianzhang
* @Date: 2023/5/15 12:06 AM
*/
@GetMapping("screen/catalagueQtyStats")
public Result<List<ScreenCatalogueQtyStatsRstDTO>> screenCatalogueQtyStats(@RequestParam("orgId") String orgId,
@RequestParam("orgType") String orgType) {
List<ScreenCatalogueQtyStatsRstDTO> l = lingShanServiceAgentService.screenCatalogueQtyStats(orgId, orgType);
return new Result<List<ScreenCatalogueQtyStatsRstDTO>>().ok(l);
}
/**
* @Description: 代办员列表
* @param type: agent:代办员service_unclosed:未办结服务service_closed:已办结服务
* @param orgType: gridagency
* @param orgId: 组织id
* @Return com.epmet.commons.tools.utils.Result
* @Author: wangxianzhang
* @Date: 2023/5/15 2:51 PM
*/
@GetMapping("screen/agentList")
public Result<List<LingShanScreenAgentRstDTO>> screenAagentList(@RequestParam("orgType") String orgType,
@RequestParam("orgId") String orgId) {
List<LingShanScreenAgentRstDTO> rs = lingShanServiceAgentService.screenAgentList(orgType, orgId);
return new Result<List<LingShanScreenAgentRstDTO>>().ok(rs);
}
/**
* @Description: 大屏中央服务列表
* @param orgType:
* @param orgId:
* @param dataType: agnet service_unclosed service_closed
* @Return com.epmet.commons.tools.utils.Result
* @Author: wangxianzhang
* @Date: 2023/5/15 7:56 PM
*/
@GetMapping("screen/serviceList")
public Result<List<LingShanScreenServiceRstDTO>> screenServiceList(@RequestParam("orgType") String orgType,
@RequestParam("orgId") String orgId,
@RequestParam("dataType") String dataType) {
List<LingShanScreenServiceRstDTO> rl = lingShanServiceAgentService.screenServiceList(orgType, orgId, dataType);
return new Result<List<LingShanScreenServiceRstDTO>>().ok(rl);
}
}

13
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/LingshanAgentServiceRecordDao.java

@ -1,8 +1,13 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.result.agentservice.LingShanScreenAgentRstDTO;
import com.epmet.entity.LingshanAgentServiceRecordEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Set;
/**
* 待办服务记录
@ -13,4 +18,12 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface LingshanAgentServiceRecordDao extends BaseDao<LingshanAgentServiceRecordEntity> {
/**
* @Description: 大屏代办员列表+服务数量统计
* @param agentIds:
* @Return java.util.List<com.epmet.dto.result.agentservice.LingShanScreenAgentRstDTO>
* @Author: wangxianzhang
* @Date: 2023/5/15 3:22 PM
*/
List<LingShanScreenAgentRstDTO> screenAgentListAndServiceQty(@Param("agentIds") Set<String> agentIds);
}

11
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/LingShanAgentServiceService.java

@ -2,10 +2,7 @@ package com.epmet.service;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.form.lingshan.AgentServiceResiSubmitFormDTO;
import com.epmet.dto.result.agentservice.AgentServiceList4WorkPcResultDTO;
import com.epmet.dto.result.agentservice.LingShanAgentServiceCategoryResultDTO;
import com.epmet.dto.result.agentservice.ResiMyCreatedAgentServiceResultDTO;
import com.epmet.dto.result.agentservice.WorkServiceAgentResultDTO;
import com.epmet.dto.result.agentservice.*;
import java.util.Date;
import java.util.List;
@ -31,4 +28,10 @@ public interface LingShanAgentServiceService {
void workPcDelete(String id);
List<LingShanAgentServiceCategoryResultDTO> listServiceCategories();
List<ScreenCatalogueQtyStatsRstDTO> screenCatalogueQtyStats(String orgId, String orgType);
List<LingShanScreenAgentRstDTO> screenAgentList(String orgType, String orgId);
List<LingShanScreenServiceRstDTO> screenServiceList(String orgType, String orgId, String dataType);
}

176
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/LingShanAgentServiceServiceImpl.java

@ -4,11 +4,13 @@ import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.epmet.LingShanAgentServiceProcessStatusEnum;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.distributedlock.DistributedLock;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.feign.ResultDataResolver;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.common.CustomerOrgRedis;
import com.epmet.commons.tools.redis.common.CustomerResiUserRedis;
@ -22,14 +24,15 @@ import com.epmet.commons.tools.utils.PidUtils;
import com.epmet.constant.OrgInfoConstant;
import com.epmet.dao.LingshanAgentServiceCategoryDao;
import com.epmet.dao.LingshanAgentServiceRecordDao;
import com.epmet.dataaggre.dto.epmetuser.result.LingshanServiceAgentAgentList;
import com.epmet.dataaggre.feign.DataAggregatorOpenFeignClient;
import com.epmet.dto.IcResiUserDTO;
import com.epmet.dto.form.lingshan.AgentServiceResiSubmitFormDTO;
import com.epmet.dto.result.LoginUserDetailsResultDTO;
import com.epmet.dto.result.agentservice.AgentServiceList4WorkPcResultDTO;
import com.epmet.dto.result.agentservice.LingShanAgentServiceCategoryResultDTO;
import com.epmet.dto.result.agentservice.ResiMyCreatedAgentServiceResultDTO;
import com.epmet.dto.result.agentservice.WorkServiceAgentResultDTO;
import com.epmet.dto.result.agentservice.*;
import com.epmet.entity.LingshanAgentServiceCategoryEntity;
import com.epmet.entity.LingshanAgentServiceRecordEntity;
import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.remote.EpmetUserRemoteService;
import com.epmet.service.LingShanAgentServiceService;
import com.github.pagehelper.PageHelper;
@ -40,13 +43,13 @@ import org.redisson.api.RLock;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
@Service
@Slf4j
public class LingShanAgentServiceServiceImpl implements LingShanAgentServiceService {
public class LingShanAgentServiceServiceImpl implements LingShanAgentServiceService, ResultDataResolver {
@Autowired
private LingshanAgentServiceCategoryDao agentServiceCategoryDao;
@ -60,6 +63,12 @@ public class LingShanAgentServiceServiceImpl implements LingShanAgentServiceServ
@Autowired
private EpmetUserRemoteService epmetUserRemoteService;
@Autowired
private DataAggregatorOpenFeignClient dataAggregatorOpenFeignClient;
@Autowired
private EpmetUserOpenFeignClient userOpenFeignClient;
public static final String AGENT_SERVICE_LOCK_PREFIX = "lingshan:agentservice:statuschange:";
@Override
@ -368,4 +377,157 @@ public class LingShanAgentServiceServiceImpl implements LingShanAgentServiceServ
String agencyName = agencyInfo.getOrganizationName();
return agencyName.concat("-").concat(gridInfo.getGridName());
}
@Override
public List<ScreenCatalogueQtyStatsRstDTO> screenCatalogueQtyStats(String orgId, String orgType) {
ArrayList<ScreenCatalogueQtyStatsRstDTO> rl = new ArrayList<>();
// 代办员
Integer c = getResultDataOrThrowsException(dataAggregatorOpenFeignClient.lingshanScreenAgentQty(orgId, orgType),
ServiceConstant.DATA_AGGREGATOR_SERVER, EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), null, "查询代办员数量失败");
rl.add(new ScreenCatalogueQtyStatsRstDTO("agent", "代办员", c));
LambdaQueryWrapper<LingshanAgentServiceRecordEntity> q = new LambdaQueryWrapper<>();
String orgIdPath;
if (OrgInfoConstant.AGENCY.equals(orgType)) {
// 行政组织
AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(orgId);
orgIdPath = PidUtils.convertPid2OrgIdPath(agencyInfo.getId(), agencyInfo.getPids());
} else {
// 网格
GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(orgId);
orgIdPath = PidUtils.convertPid2OrgIdPath(gridInfo.getId(), gridInfo.getPids());
}
// 未办结事件
q.eq(LingshanAgentServiceRecordEntity::getCustomerId, EpmetRequestHolder.getLoginUserCustomerId());
q.likeRight(LingshanAgentServiceRecordEntity::getOrgIdPath, orgIdPath);
q.eq(LingshanAgentServiceRecordEntity::getProcessStatus, LingShanAgentServiceProcessStatusEnum.ACCEPTED); //已受理=未办结
rl.add(new ScreenCatalogueQtyStatsRstDTO("service_unclosed", "未办结事件", agentServiceRecordDao.selectCount(q)));
// 已办结事件
q.clear();
q.eq(LingshanAgentServiceRecordEntity::getCustomerId, EpmetRequestHolder.getLoginUserCustomerId());
q.likeRight(LingshanAgentServiceRecordEntity::getOrgIdPath, orgIdPath);
q.eq(LingshanAgentServiceRecordEntity::getProcessStatus, LingShanAgentServiceProcessStatusEnum.CLOSED); //已受理=未办结
rl.add(new ScreenCatalogueQtyStatsRstDTO("service_closed", "已办结事件", agentServiceRecordDao.selectCount(q)));
return rl;
}
@Override
public List<LingShanScreenAgentRstDTO> screenAgentList(String orgType, String orgId) {
// 此时一个工作人员可能对应两个网格,也即这个列表里面,可能有同一个agentId对应多个GridId数据,笛卡尔积
List<LingshanServiceAgentAgentList> agentList = getResultDataOrThrowsException(dataAggregatorOpenFeignClient.screenAgentList(orgId, orgType),
ServiceConstant.DATA_AGGREGATOR_SERVER, EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), null, "查询代办员列表失败");
Set<String> agentIds = agentList.stream().map(LingshanServiceAgentAgentList::getAgentId).collect(Collectors.toSet());
// 拼接一个二维map;得到每一个agentId和gridId和统计数量列表
// <agentId:<gridId:LingShanScreenAgentRstDTO>>
HashMap<String, Map<String, LingShanScreenAgentRstDTO>> staffsIdAndStatsDatasInGrid = new HashMap<>();
List<LingShanScreenAgentRstDTO> agents = agentServiceRecordDao.screenAgentListAndServiceQty(agentIds);
agents.stream().forEach(agent -> {
Map<String, LingShanScreenAgentRstDTO> gridIdAndStatsData = staffsIdAndStatsDatasInGrid.get(agent.getAgentId());
if (gridIdAndStatsData == null) {
gridIdAndStatsData = new HashMap<>();
staffsIdAndStatsDatasInGrid.put(agent.getAgentId(), gridIdAndStatsData);
}
LingShanScreenAgentRstDTO statsDataInGrid = gridIdAndStatsData.get(agent.getGridId());
if (statsDataInGrid == null) {
gridIdAndStatsData.put(agent.getGridId(), agent);
}
});
return agentList.stream().map(agent -> {
LingShanScreenAgentRstDTO d = new LingShanScreenAgentRstDTO();
d.setGridId(agent.getGridId());
d.setMobile(agent.getMobile());
d.setAgentId(agent.getAgentId());
d.setAgentName(agent.getAgentName());
d.setLatitude(agent.getLatitude());
d.setLongitude(agent.getLongitude());
d.setClosedServiceQty(0);
d.setUnClosedServiceQty(0);
// 赋值数量
Map<String, LingShanScreenAgentRstDTO> gridIdsAndStats = staffsIdAndStatsDatasInGrid.get(agent.getAgentId());
if (gridIdsAndStats != null) {
LingShanScreenAgentRstDTO statsOfGrid = gridIdsAndStats.get(agent.getGridId());
if (statsOfGrid != null) {
d.setClosedServiceQty(statsOfGrid.getClosedServiceQty());
d.setUnClosedServiceQty(statsOfGrid.getUnClosedServiceQty());
}
}
return d;
}).collect(Collectors.toList());
}
@Override
public List<LingShanScreenServiceRstDTO> screenServiceList(String orgType, String orgId, String dataType) {
String orgIdPath;
if (StringUtils.isAnyBlank(orgType, orgId)) {
LoginUserDetailsResultDTO loginUserDetails = epmetUserRemoteService.getLoginUserDetails();
orgIdPath = loginUserDetails.getOrgIdPath();
} else {
if (OrgInfoConstant.AGENCY.equals(orgType)) {
AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(orgId);
orgIdPath = PidUtils.convertPid2OrgIdPath(agencyInfo.getId(), agencyInfo.getPids());
} else {
GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(orgId);
orgIdPath = PidUtils.convertPid2OrgIdPath(gridInfo.getId(), gridInfo.getPids());
}
}
Integer processStatus;
if ("service_unclosed".equals(dataType)) {
processStatus = LingShanAgentServiceProcessStatusEnum.ACCEPTED.getStatusCode();
} else if ("service_closed".equals(dataType)) {
processStatus = LingShanAgentServiceProcessStatusEnum.CLOSED.getStatusCode();
} else {
processStatus = -100;
}
LambdaQueryWrapper<LingshanAgentServiceRecordEntity> q = new LambdaQueryWrapper<>();
q.likeRight(LingshanAgentServiceRecordEntity::getOrgIdPath, orgIdPath);
q.eq(LingshanAgentServiceRecordEntity::getProcessStatus, processStatus);
List<LingshanAgentServiceRecordEntity> serviceRecords = agentServiceRecordDao.selectList(q);
return serviceRecords.stream().map(rec -> {
LingShanScreenServiceRstDTO d = new LingShanScreenServiceRstDTO();
CustomerStaffInfoCacheResult agentInfo = CustomerStaffRedis.getStaffInfo(EpmetRequestHolder.getLoginUserCustomerId(), rec.getAgentId());
if (agentInfo != null) {
d.setAgentMobile(agentInfo.getMobile());
}
// todo 此处要查什么??申请人家庭住址?申请人家庭住址是什么?
// IcResiUserDTO resiUser = getResultDataOrReturnNull(userOpenFeignClient.getIcResiUserDTO(rec.getApplicantId()), ServiceConstant.EPMET_USER_SERVER);
// if (resiUser == null) {
// log.error("【灵山大屏】代办事件列表:查询申请人信息失败,申请人ID:" + rec.getApplicantId());
// } else {
// GridInfoCache resiUserGridInfo = CustomerOrgRedis.getGridInfo(resiUser.getGridId());
// if (resiUserGridInfo == null) {
// log.error("【灵山大屏】代办事件列表:查询申请人所属网格信息失败,申请人ID:" + rec.getApplicantId());
// } else {
// d.setApplicantHomeAddress(resiUserGridInfo.getGridName());
// }
// }
d.setContent(rec.getContent());
d.setCreatedTime(rec.getCreatedTime());
d.setApplicantName(rec.getApplicantName());
d.setApplicantMobile(rec.getContactMobile());
d.setAgentName(rec.getAgentName());
return d;
}).collect(Collectors.toList());
}
}

22
epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/LingshanAgentServiceRecordDao.xml

@ -36,5 +36,27 @@
<result property="latitude" column="LATITUDE"/>
</resultMap>
<!--大屏:代办员列表+服务数量统计-->
<select id="screenAgentListAndServiceQty"
resultType="com.epmet.dto.result.agentservice.LingShanScreenAgentRstDTO">
select r.AGENT_ID
, r.GRID_ID
, count(r.PROCESS_STATUS = 1 or null) as unClosedServiceQty
, count(r.PROCESS_STATUS = 3 or null) as closedServiceQty
from lingshan_agent_service_record r
<where>
<if test="agentIds != null and agentIds.size() > 0">
r.AGENT_ID in
<foreach collection="agentIds" open="(" separator="," item="agentId" close=")" >
#{agentId}
</foreach>
</if>
and r.DEL_FLAG = 0
and r.AGENT_ID is not null
and r.AGENT_ID != ''
</where>
group by r.AGENT_ID, r.GRID_ID
</select>
</mapper>
Loading…
Cancel
Save