Browse Source

Merge branch 'lingshan_master' of http://git.elinkit.com.cn:7070/r/epmet-cloud

master
wxz 3 years ago
parent
commit
dbb7b23d49
  1. 36
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/OrgCommonFormDTO.java
  2. 1
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/DictTypeEnum.java
  3. 9
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/net/TCCCClientUtils.java
  4. 4
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/CustomerStaffDTO.java
  5. 21
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/LingShanScreenAgentRstDTO.java
  6. 29
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/LingshanServiceAgentAgentList.java
  7. 13
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/form/StaffDetailV2FormDTO.java
  8. 49
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/feign/DataAggregatorOpenFeignClient.java
  9. 16
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/feign/impl/DataAggregatorOpenFeignClientFallback.java
  10. 5
      epmet-module/data-aggregator/data-aggregator-server/pom.xml
  11. 10
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/beans/LingShanAgentServiceStaffAndGrid.java
  12. 14
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/beans/StaffInfoInGridOfRole.java
  13. 2
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovOrgController.java
  14. 78
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/LingShanServiceAgentController.java
  15. 31
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/CustomerStaffDao.java
  16. 5
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/CustomerStaffGridDao.java
  17. 14
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/LingShanServiceAgentService.java
  18. 6
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/EpmetUserService.java
  19. 56
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java
  20. 8
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgService.java
  21. 32
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java
  22. 244
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/impl/LingShanServiceAgentServiceImpl.java
  23. 50
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/CustomerStaffDao.xml
  24. 11
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerStaffGridDao.xml
  25. 59
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/LingShanAgentServiceProcessStatusEnum.java
  26. 202
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/LingshanOfficeHallServiceRecordDTO.java
  27. 18
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/agentservice/WorkCloseAgentServiceFormDTO.java
  28. 35
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/lingshan/AgentServiceResiSubmitFormDTO.java
  29. 59
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/lingshan/LingshanOfficeHallServiceRecordPageFormDTO.java
  30. 17
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/LingShanPartyUnitRstDTO.java
  31. 35
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/agentservice/AgentServiceList4WorkPcResultDTO.java
  32. 57
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/agentservice/AgentServiceTrendAnalysisRstDTO.java
  33. 28
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/agentservice/LingShanAgentServiceCategoryResultDTO.java
  34. 21
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/agentservice/LingShanScreenAgentRstDTO.java
  35. 29
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/agentservice/LingShanScreenServiceRstDTO.java
  36. 48
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/agentservice/ResiMyCreatedAgentServiceResultDTO.java
  37. 20
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/agentservice/ScreenAgentServiceCategoryAnalysisRstDTO.java
  38. 22
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/agentservice/ScreenCatalogueQtyStatsRstDTO.java
  39. 25
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/agentservice/WorkServiceAgentResultDTO.java
  40. 25
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/EpmetHeartOpenFeignClient.java
  41. 11
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/fallback/EpmetHeartOpenFeignClientFallback.java
  42. 29
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcPartyUnitController.java
  43. 320
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/LingShanAgentServiceController.java
  44. 176
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/LingshanOfficeHallServiceRecordController.java
  45. 16
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/LingshanAgentServiceCategoryDao.java
  46. 29
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/LingshanAgentServiceRecordDao.java
  47. 30
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/LingshanOfficeHallServiceRecordDao.java
  48. 44
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/LingshanAgentServiceCategoryEntity.java
  49. 133
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/LingshanAgentServiceRecordEntity.java
  50. 118
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/LingshanOfficeHallServiceRecordEntity.java
  51. 92
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/LingshanOfficeHallServiceRecordExportExcel.java
  52. 9
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcPartyUnitService.java
  53. 41
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/LingShanAgentServiceService.java
  54. 70
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/LingshanOfficeHallServiceRecordService.java
  55. 29
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyUnitServiceImpl.java
  56. 623
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/LingShanAgentServiceServiceImpl.java
  57. 207
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/LingshanOfficeHallServiceRecordServiceImpl.java
  58. 21
      epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/LingshanAgentServiceCategoryDao.xml
  59. 62
      epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/LingshanAgentServiceRecordDao.xml
  60. 48
      epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/LingshanOfficeHallServiceRecordDao.xml
  61. 3
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcHouseDTO.java
  62. 7
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddStaffV2FromDTO.java
  63. 3
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcHouseAddFormDTO.java
  64. 13
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/StaffSubmitFromDTO.java
  65. 15
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/lingshan/DangerousChemicalsDistributionFormDTO.java
  66. 23
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/LingShanPartyServiceCenterQtyRstDTO.java
  67. 12
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/LingShanScreenPartyObjectByTypeRstDTO.java
  68. 8
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/StaffInitResultDTO.java
  69. 56
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/lingshan/DangerousChemicalsTypeStatDetailDTO.java
  70. 17
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/lingshan/DangerousChemicalsTypeStatResultDTO.java
  71. 25
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/GovOrgOpenFeignClient.java
  72. 9
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/fallback/GovOrgOpenFeignClientFallback.java
  73. 31
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcDangerousChemicalsController.java
  74. 38
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcPartyServiceCenterController.java
  75. 11
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcDangerousChemicalsDao.java
  76. 3
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcHouseEntity.java
  77. 4
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcPartyServiceCenterEntity.java
  78. 21
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcDangerousChemicalsService.java
  79. 8
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcPartyServiceCenterService.java
  80. 2
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java
  81. 96
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcDangerousChemicalsServiceImpl.java
  82. 54
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcPartyServiceCenterServiceImpl.java
  83. 28
      epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcDangerousChemicalsDao.xml
  84. 14
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/CategoryDictServiceImpl.java
  85. 10
      epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partyOrg/result/LingShanPartyMemQtyStatsInOrgRstDTO.java
  86. 25
      epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partyOrg/result/LingShanPartyOrgAndOtherObjQtyRstDTO.java
  87. 19
      epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partyOrg/result/LingShanScreenPartyObjectByTypeRstDTO.java
  88. 30
      epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/enums/LingShanPartyObjEnums.java
  89. 7
      epmet-module/resi-partymember/resi-partymember-server/pom.xml
  90. 16
      epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partyOrg/dao/IcPartyOrgDao.java
  91. 5
      epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partyOrg/entity/IcPartyOrgEntity.java
  92. 13
      epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partyOrg/service/LingShanPartyOrgService.java
  93. 189
      epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partyOrg/service/impl/LingShanPartyOrgServiceImpl.java
  94. 35
      epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/LingShanScreenController.java
  95. 26
      epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partyOrg/IcPartyOrgDao.xml
  96. 5
      epmet-user/epmet-user-client/src/main/java/com/epmet/constant/RoleKeyConstants.java
  97. 2
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/CustomerStaffDTO.java
  98. 10
      epmet-user/epmet-user-server/src/main/java/com/epmet/entity/CustomerStaffEntity.java
  99. 44
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/CustomerStaffServiceImpl.java

36
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/OrgCommonFormDTO.java

@ -0,0 +1,36 @@
package com.epmet.commons.tools.dto.form;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @Description
* @Author yzm
* @Date 2023/5/15 13:44
*/
@Data
public class OrgCommonFormDTO implements Serializable {
private static final long serialVersionUID = 2261315322260807610L;
public interface AddUserInternalGroup {
}
public interface AddUserShowGroup extends CustomerClientShowGroup {
}
/**
* 组织id或者网格id
*/
@NotBlank(message = "orgId不能为空", groups = AddUserInternalGroup.class)
private String orgId;
/**
* agency
* grid
*/
@NotBlank(message = "orgType不能为空", groups = AddUserInternalGroup.class)
private String orgType;
}

1
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/DictTypeEnum.java

@ -34,6 +34,7 @@ public enum DictTypeEnum {
TRAFFIC_TYPE("traffic_type", "交通方式", 36),
SOJOURN_HISTORY("sojourn_history", "7天内旅居史情况", 37),
TRIP_DATA_TYPE("trip_data_type", "行程记录类型", 39),
LINGSHAN_OFFICE_HALL_SERVICE_RECORD("lingshan_office_hall_service_record","灵山-办事大厅业务类型",40),
;
private final String code;

9
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/net/TCCCClientUtils.java

@ -21,12 +21,15 @@ public class TCCCClientUtils {
private static String SECRETKEY = "ymRuDJI8mCRUUPFvQqCPQME0c2MbfaM2";
private static String ENDPOINT ="ccc.ap-shanghai.tencentcloudapi.com";
public static String getToken() {
try {
Credential cred = new Credential(SECRETID, SECRETKEY);
// 实例化一个http选项,可选的,没有特殊需求可以跳过
HttpProfile httpProfile = new HttpProfile();
httpProfile.setEndpoint("ccc.ap-shanghai.tencentcloudapi.com");
httpProfile.setEndpoint(ENDPOINT);
// 实例化一个client选项,可选的,没有特殊需求可以跳过
ClientProfile clientProfile = new ClientProfile();
clientProfile.setHttpProfile(httpProfile);
@ -46,4 +49,8 @@ public class TCCCClientUtils {
return e.toString();
}
}
public static void main(String[] args) {
getToken();
}
}

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

@ -134,4 +134,8 @@ public class CustomerStaffDTO implements Serializable {
*/
private String password;
private String idCard;
private String culture;
private Date birthday;
}

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

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

@ -0,0 +1,29 @@
package com.epmet.dataaggre.dto.epmetuser.result;
import lombok.Data;
/**
* @Description 灵山代办代办员列表
* @Author wangxianzhang
* @Time 2023/5/9 4:26 PM
*/
@Data
public class LingshanServiceAgentAgentList {
private String gridId;
private String orgNamePath;
private String agentId;
private String agentName;
private Integer gender;
private String genderDisplay;
private Integer age;
private String cultureDisplay;
private Integer culture;
private String mobile;
private String idCard;
private String longitude;
private String latitude;
}

13
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/form/StaffDetailV2FormDTO.java

@ -1,5 +1,6 @@
package com.epmet.dataaggre.dto.govorg.form;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
@ -48,4 +49,16 @@ public class StaffDetailV2FormDTO implements Serializable {
private List<String> szsqRoles;
private String customerId;
private String idCard;
@JsonFormat(pattern = "yyyy-MM-dd")
private Date birthday;
/**
* 文化程度
*/
private String culture;
/**
* 文化程度中文
*/
private String cultureDisplay;
}

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

5
epmet-module/data-aggregator/data-aggregator-server/pom.xml

@ -138,6 +138,11 @@
<version>2.0.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.epmet</groupId>
<artifactId>epmet-admin-client</artifactId>
<version>2.0.0</version>
</dependency>
</dependencies>
<build>

10
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/beans/LingShanAgentServiceStaffAndGrid.java

@ -0,0 +1,10 @@
package com.epmet.dataaggre.beans;
import lombok.Data;
@Data
public class LingShanAgentServiceStaffAndGrid {
private String staffId;
private String gridId;
}

14
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/beans/StaffInfoInGridOfRole.java

@ -0,0 +1,14 @@
package com.epmet.dataaggre.beans;
import lombok.Data;
@Data
public class StaffInfoInGridOfRole {
private String staffId;
private String staffName;
private Integer gender;
private Integer age;
private Integer culture;
private String mobile;
private String idCard;
}

2
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovOrgController.java

@ -217,7 +217,7 @@ public class GovOrgController {
return new Result<OrgStaffListResultDTO>().ok(govOrgService.getCurrentOrgStafflist(formDTO));
}
/**
/**w
* @Param formDTO
* @Description 通讯录人员详情v2
* @author sun

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

@ -0,0 +1,78 @@
package com.epmet.dataaggre.controller;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dataaggre.dto.epmetuser.result.LingshanServiceAgentAgentList;
import com.epmet.dataaggre.service.LingShanServiceAgentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
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 {
@Autowired
private LingShanServiceAgentService lingShanServiceAgentService;
/**
* @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("workpc/agentList")
public 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) {
PageData<LingshanServiceAgentAgentList> pd = lingShanServiceAgentService.workPcAgentList(orgId, orgType, agentName, mobile, idCard, pageNo, pageSize);
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);
}
}

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

@ -18,6 +18,7 @@
package com.epmet.dataaggre.dao.epmetuser;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dataaggre.beans.StaffInfoInGridOfRole;
import com.epmet.dataaggre.dto.epmetuser.CustomerStaffDTO;
import com.epmet.dataaggre.dto.epmetuser.result.ListStaffResultDTO;
import com.epmet.dataaggre.dto.epmetuser.result.StaffSelectResDTO;
@ -28,6 +29,7 @@ import org.apache.ibatis.annotations.Param;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
/**
* 政府工作人员表
@ -78,8 +80,35 @@ public interface CustomerStaffDao extends BaseDao<CustomerStaffEntity> {
/**
* 根据staffId查询姓名手机号
* 禁用的不展示
* @param staffIds
* @param staffIdss
* @return
*/
List<StaffSelectResDTO> staffSelectList(@Param("staffIds") List<String> staffIds);
/**
* @Description:查询工作人员列表
* @param staffIds: 工作人员id列表
* @param roleId: 角色id
* @param mobile: 手机号
* @param realname: realname
* @param idCard: 身份证
* @Return void
* @Author: wangxianzhang
* @Date: 2023/5/10 9:37 AM
*/
List<StaffInfoInGridOfRole> selectStaffListByStaffIdsAndRole(@Param("staffIds") Set<String> staffIds,
@Param("roleId") String roleId,
@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);
}

5
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/CustomerStaffGridDao.java

@ -18,14 +18,17 @@
package com.epmet.dataaggre.dao.govorg;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dataaggre.beans.LingShanAgentServiceStaffAndGrid;
import com.epmet.dataaggre.dto.govorg.OrgDTO;
import com.epmet.dataaggre.dto.govorg.result.GridStaffResultDTO;
import com.epmet.dataaggre.dto.govorg.result.StaffAgencyGridListResultDTO;
import com.epmet.dataaggre.entity.govorg.CustomerStaffGridEntity;
import com.epmet.dataaggre.service.impl.LingShanServiceAgentServiceImpl;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
* 网格人员关系表
@ -58,4 +61,6 @@ public interface CustomerStaffGridDao extends BaseDao<CustomerStaffGridEntity> {
List<OrgDTO> selectGridList(@Param("agencyId") String agencyId, @Param("userId") String userId);
List<GridStaffResultDTO> getGridStaffByAgency(@Param("agencyId") String agencyId);
List<LingShanAgentServiceStaffAndGrid> getStaffAndItsBelongsGridByAgencyIdPath(@Param("agencyIdPath") String agencyIdPath);
}

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

@ -0,0 +1,14 @@
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);
}

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

@ -2,6 +2,7 @@ package com.epmet.dataaggre.service.epmetuser;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.dataaggre.beans.StaffInfoInGridOfRole;
import com.epmet.dataaggre.dto.datastats.form.NowStatsDataFormDTO;
import com.epmet.dataaggre.dto.datastats.result.NowStatsDataResultDTO;
import com.epmet.dataaggre.dto.epmetuser.form.*;
@ -26,6 +27,7 @@ import com.epmet.dto.result.DetailByTypeResultDTO;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* @Author zxc
@ -263,4 +265,8 @@ public interface EpmetUserService {
*/
DetailByTypeResultDTO detailByType(DetailByTypeFormDTO formDTO, TokenDto tokenDto);
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);
}

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

@ -5,12 +5,14 @@ import com.epmet.commons.dynamic.datasource.annotation.DataSource;
import com.epmet.commons.rocketmq.constants.TopicConstants;
import com.epmet.commons.rocketmq.messages.CheckMQMsg;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.dto.form.IdAndNameDTO;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.enums.OrgTypeEnum;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.feign.ResultDataResolver;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.common.CustomerIcHouseRedis;
import com.epmet.commons.tools.redis.common.CustomerResiUserRedis;
@ -22,6 +24,7 @@ import com.epmet.commons.tools.utils.*;
import com.epmet.constant.BadgeConstant;
import com.epmet.constant.NeighborhoodConstant;
import com.epmet.constant.OrgInfoConstant;
import com.epmet.dataaggre.beans.StaffInfoInGridOfRole;
import com.epmet.dataaggre.constant.DataSourceConstant;
import com.epmet.dataaggre.dao.epmetuser.*;
import com.epmet.dataaggre.dto.datastats.form.NowStatsDataFormDTO;
@ -50,6 +53,7 @@ import com.epmet.dataaggre.service.govorg.GovOrgService;
import com.epmet.dataaggre.service.govproject.GovProjectService;
import com.epmet.dataaggre.service.opercustomize.CustomerFootBarService;
import com.epmet.dto.IcResiUserDTO;
import com.epmet.dto.SysDictDataDTO;
import com.epmet.dto.UserBaseInfoDTO;
import com.epmet.dto.form.DetailByTypeFormDTO;
import com.epmet.dto.form.GetStaffExistRoleFormDTO;
@ -57,6 +61,7 @@ import com.epmet.dto.form.SystemMsgFormDTO;
import com.epmet.dto.result.DetailByTypeResultDTO;
import com.epmet.dto.result.NewUserRoleResultDTO;
import com.epmet.dto.result.StaffRoleResultDTO;
import com.epmet.feign.EpmetAdminOpenFeignClient;
import com.epmet.feign.EpmetMessageOpenFeignClient;
import com.epmet.feign.GovAccessFeignClient;
import com.github.pagehelper.PageHelper;
@ -83,7 +88,7 @@ import java.util.stream.Collectors;
@Service
@DataSource(DataSourceConstant.EPMET_USER)
@Slf4j
public class EpmetUserServiceImpl implements EpmetUserService {
public class EpmetUserServiceImpl implements EpmetUserService, ResultDataResolver {
@Autowired
private UserBaseInfoDao userBaseInfoDao;
@ -121,6 +126,8 @@ public class EpmetUserServiceImpl implements EpmetUserService {
private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient;
@Autowired
private GovAccessFeignClient govAccessFeignClient;
@Autowired
private EpmetAdminOpenFeignClient adminOpenFeignClient;
/**
* @Description 根据UserIds查询
@ -752,6 +759,16 @@ public class EpmetUserServiceImpl implements EpmetUserService {
result.setName(dto.getRealName());
result.setGender(dto.getGender().toString());
result.setRoles(list);
List<SysDictDataDTO> dict = getResultDataOrReturnNull(adminOpenFeignClient.dictDataList("education"), ServiceConstant.EPMET_ADMIN_SERVER);
if (CollectionUtils.isNotEmpty(dict)) {
for (SysDictDataDTO d : dict) {
if (d.getDictValue().equals(dto.getCulture())) {
result.setCultureDisplay(d.getDictLabel());
break;
}
}
}
// 获取数字社区里的新角色
GetStaffExistRoleFormDTO getStaffExistRoleFormDTO = new GetStaffExistRoleFormDTO();
getStaffExistRoleFormDTO.setStaffId(staffId);
@ -1133,4 +1150,41 @@ public class EpmetUserServiceImpl implements EpmetUserService {
epmetMessageOpenFeignClient.sendSystemMsgByMQ(form);
return result;
}
@Override
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, customerId);
rq.eq(GovStaffRoleEntity::getRoleKey, roleKey);
GovStaffRoleEntity role = govStaffRoleDao.selectOne(rq);
if (role == null) {
return null;
}
PageHelper.startPage(pageNo, pageSize);
List<StaffInfoInGridOfRole> ss = customerStaffDao.selectStaffListByStaffIdsAndRole(staffIds, role.getId(), mobile, agentName, idCard);
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());
}
}

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

@ -3,6 +3,7 @@ package com.epmet.dataaggre.service.govorg;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.common.bean.BuildingInfoCache;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.dataaggre.beans.LingShanAgentServiceStaffAndGrid;
import com.epmet.dataaggre.dto.epmetuser.form.ResisByPolicyRulesFormDTO;
import com.epmet.dataaggre.dto.epmetuser.result.StaffSelectResDTO;
import com.epmet.dataaggre.dto.evaluationindex.ScreenAgencyOrGridListDTO;
@ -13,11 +14,13 @@ 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;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* @Author zxc
@ -301,4 +304,9 @@ public interface GovOrgService {
*/
Map<String,String> getEmployeeRegisterMobileAndIdCard(String registerId);
List<LingShanAgentServiceStaffAndGrid> getStaffAndItsBelongsGridByAgencyIdPath(String agencyIdPath);
Set<String> getStaffIdsInGrid(String gridId);
List<CustomerGridEntity> listBelongGridsByStaffId(String staffId);
}

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

@ -32,6 +32,7 @@ import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.HttpClientManager;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dataaggre.beans.LingShanAgentServiceStaffAndGrid;
import com.epmet.dataaggre.constant.DataSourceConstant;
import com.epmet.dataaggre.constant.OrgConstant;
import com.epmet.dataaggre.dao.govorg.*;
@ -49,6 +50,7 @@ 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.dataaggre.entity.govorg.CustomerStaffGridEntity;
import com.epmet.dataaggre.excel.GridLivelyDetailExcel;
import com.epmet.dataaggre.excel.GridLivelyExcel;
import com.epmet.dataaggre.service.commonservice.AreaCodeService;
@ -1540,4 +1542,34 @@ public class GovOrgServiceImpl implements GovOrgService {
return customerAgencyDao.getEmployeeRegisterMobileAndIdCard(registerId);
}
@Override
public List<LingShanAgentServiceStaffAndGrid> getStaffAndItsBelongsGridByAgencyIdPath(String agencyIdPath) {
return customerStaffGridDao.getStaffAndItsBelongsGridByAgencyIdPath(agencyIdPath);
}
@Override
public Set<String> getStaffIdsInGrid(String gridId) {
LambdaQueryWrapper<CustomerStaffGridEntity> q = new LambdaQueryWrapper<>();
q.eq(CustomerStaffGridEntity::getGridId, gridId);
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);
}
}

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

@ -0,0 +1,244 @@
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;
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.bean.AgencyInfoCache;
import com.epmet.commons.tools.redis.common.bean.GridInfoCache;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.PidUtils;
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;
import com.epmet.dto.SysDictDataDTO;
import com.epmet.dto.result.LoginUserDetailsResultDTO;
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.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@Service
public class LingShanServiceAgentServiceImpl implements LingShanServiceAgentService, ResultDataResolver {
@Autowired
private EpmetUserService epmetUserService;
@Autowired
private GovOrgService govOrgService;
@Autowired
private EpmetAdminOpenFeignClient adminOpenFeignClient;
@Autowired
private EpmetUserRemoteService epmetUserRemoteService;
/**
* @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);
List<LingShanAgentServiceStaffAndGrid> sags = govOrgService.getStaffAndItsBelongsGridByAgencyIdPath(PidUtils.convertPid2OrgIdPath(agencyInfo.getId(), agencyInfo.getPids()));
for (LingShanAgentServiceStaffAndGrid sag : sags) {
staffIds.add(sag.getStaffId());
List<String> gridIds = staffIdAndGridIds.get(sag.getStaffId());
if (CollectionUtils.isEmpty(gridIds)) {
gridIds = new ArrayList<>();
staffIdAndGridIds.put(sag.getStaffId(), gridIds);
}
gridIds.add(sag.getGridId());
}
} else if (OrgInfoConstant.GRID.equals(orgType)) {
// 网格
staffIds = govOrgService.getStaffIdsInGrid(orgId);
for (String staffId : staffIds) {
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);
if (pd == null) {
return new PageData(new ArrayList(), 0);
}
// 性别字典
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 = pd.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());
// 组织名称
d.setOrgNamePath(getOrgNamePath(staffIdAndGridIds.get(e.getStaffId())));
return d;
}).collect(Collectors.toList());
return new PageData<>(rl, pd.getTotal());
}
/**
* 通过gridid列表拼接处组织名称path例如开发者社区-Java第一网格开发者社区-Python第一网格
*/
private String getOrgNamePath(List<String> gridIds) {
List<String> orgNames = gridIds.stream().map(gridId -> {
GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(gridId);
if (gridInfo == null) {
return null;
}
AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(gridInfo.getPid());
String agencyName = agencyInfo.getOrganizationName();
return agencyName.concat("-").concat(gridInfo.getGridName());
}).filter(Objects::nonNull).collect(Collectors.toList());
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;
}
}

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

@ -163,4 +163,54 @@
cs.user_id = #{staffId}
</foreach>
</select>
<!--查询网格下具有指定角色的工作人员列表-->
<select id="selectStaffListByStaffIdsAndRole" resultType="com.epmet.dataaggre.beans.StaffInfoInGridOfRole">
select sr.STAFF_ID staffId
, s.REAL_NAME staffName
, s.GENDER
, year(now()) - year(s.BIRTHDAY) age
, s.CULTURE
, s.MOBILE
, s.ID_CARD
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>
<if test="mobile != null and mobile != ''">
and s.MOBILE like CONCAT('%',#{mobile},'%')
</if>
<if test="realname != null and realname != ''">
and s.REAL_NAME like CONCAT('%',#{realname},'%')
</if>
<if test="idCard != null and idCard != ''">
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>

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

@ -68,4 +68,15 @@
AND b.PID = #{agencyId}
</select>
<!--一个工作人员可能属于同一个agencyId下的多个grid-->
<select id="getStaffAndItsBelongsGridByAgencyIdPath" resultType="com.epmet.dataaggre.beans.LingShanAgentServiceStaffAndGrid">
select g.ID gridId, sg.USER_ID staffId
from customer_grid g
inner join customer_staff_grid sg on (sg.DEL_FLAG = 0 and g.ID = sg.GRID_ID)
where g.PIDS like CONCAT(#{agencyIdPath}, '%')
and g.DEL_FLAG = 0
</select>
</mapper>

59
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/LingShanAgentServiceProcessStatusEnum.java

@ -0,0 +1,59 @@
package com.epmet;
/**
* @Description 红色待办-待办状态枚举
* @Author wangxianzhang
* @Time 2023/5/9 9:59 AM
*/
public enum LingShanAgentServiceProcessStatusEnum {
// 办理状态。0待受理,1已受理,2已驳回,3已办结,-1已撤回
WAIT_ACCEPT(0, "待受理"),
ACCEPTED(1, "已受理"),
REJECTED(2, "已驳回"),
CLOSED(3, "已办结"),
WITHDRAW(-1, "已撤回");
private int statusCode;
private String statusName;
LingShanAgentServiceProcessStatusEnum(int status, String name) {
this.statusCode = status;
this.statusName = name;
}
public static LingShanAgentServiceProcessStatusEnum getByStatus(int statusCode) {
for (LingShanAgentServiceProcessStatusEnum e : LingShanAgentServiceProcessStatusEnum.values()) {
if (e.statusCode == statusCode) {
return e;
}
}
return null;
}
public static LingShanAgentServiceProcessStatusEnum getByName(String statusName) {
for (LingShanAgentServiceProcessStatusEnum e : LingShanAgentServiceProcessStatusEnum.values()) {
if (e.statusName.equals(statusName)) {
return e;
}
}
return null;
}
public int getStatusCode() {
return statusCode;
}
public void setStatusCode(int statusCode) {
this.statusCode = statusCode;
}
public String getStatusName() {
return statusName;
}
public void setStatusName(String statusName) {
this.statusName = statusName;
}
}

202
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/LingshanOfficeHallServiceRecordDTO.java

@ -0,0 +1,202 @@
package com.epmet.dto;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.Date;
/**
* 灵山_办事大厅服务记录
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2023-05-15
*/
@Data
public class LingshanOfficeHallServiceRecordDTO implements Serializable {
private static final long serialVersionUID = 2157075710544884607L;
public interface AddInternalGroup {
}
public interface AddShowGroup extends CustomerClientShowGroup {
}
public interface UpdateInternalGroup {
}
public interface UpdateShowGroup extends CustomerClientShowGroup {
}
/**
* 主键
*/
@NotBlank(message = "id不能为空",groups = {UpdateInternalGroup.class})
private String id;
/**
* 租户号
*/
private String customerId;
/**
* 工作人员录入gov_pc居民端小程序resi_mp
*/
private String sourceType;
/**
* 事项类型
*/
@NotBlank(message = "事项类型不能为空",groups = {AddShowGroup.class,UpdateShowGroup.class})
private String categoryCode;
/**
* 类别名称
* 举例营业执照服务食品许可证服务医疗保险业务养老保险业务
*/
private String categoryName;
/**
* 事项说明
*/
@NotBlank(message = "事项说明不能为空",groups = {AddShowGroup.class,UpdateShowGroup.class})
@Length(max = 500, message = "事项说明最多输入500字", groups = {AddShowGroup.class, UpdateShowGroup.class})
private String content;
/**
* 申请人所属组织id或者网格id
*/
@NotBlank(message = "申请人所属组织不能为空",groups = {AddShowGroup.class,UpdateShowGroup.class})
private String applicantOrgId;
/**
* agency或者grid
*/
@NotBlank(message = "orgType不能为空",groups = {AddInternalGroup.class,UpdateInternalGroup.class})
private String applicantOrgType;
/**
* ORG_ID全路径
*/
private String applicantOrgIdPath;
/**
* 申请人所属组织名称
*/
private String applicantOrgName;
/**
* 申请人姓名
*/
// @NotBlank(message = "申请人姓名不能为空",groups = {AddShowGroup.class,UpdateShowGroup.class})
// @Length(max = 30, message = "申请人姓名最多输入30字", groups = {AddShowGroup.class, UpdateShowGroup.class})
private String applicantName;
/**
* 申请人联系电话
*/
// @NotBlank(message = "申请人电话不能为空",groups = {AddShowGroup.class,UpdateShowGroup.class})
// @Length(max = 30, message = "申请人电话最多输入30字", groups = {AddShowGroup.class, UpdateShowGroup.class})
private String applicantMobile;
/**
* 申请人身份证号
*/
// @NotBlank(message = "申请人身份证号不能为空",groups = {AddShowGroup.class,UpdateShowGroup.class})
// @Length(max = 30, message = "申请人身份证号最多输入30字", groups = {AddShowGroup.class, UpdateShowGroup.class})
private String applicantIdCard;
/**
* 申请日期
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
// @NotNull(message = "申请日期不能为空",groups = {AddShowGroup.class,UpdateShowGroup.class})
private Date applicantTime;
/**
* 办理人姓名
*/
@NotBlank(message = "办理人姓名不能为空",groups = {AddShowGroup.class,UpdateShowGroup.class})
@Length(max = 30, message = "办理人姓名最多输入30字", groups = {AddShowGroup.class, UpdateShowGroup.class})
private String transactorName;
/**
* 未办结0已办结1
*/
@NotBlank(message = "办理状态不能为空",groups = {AddShowGroup.class,UpdateShowGroup.class})
private String status;
private String statusName;
/**
* 办结日期
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date closeTime;
/**
* 满意度评价-1不满意0基本满意1非常满意
*/
private Integer satisfication;
private String satisficationName;
/**
* 本条数据所属组织id/所属网格id
*/
private String orgId;
/**
* agency或者grid
*/
private String orgType;
/**
* 本条数据所属组织的org_id_path
*/
private String orgIdPath;
/**
* 乐观锁
*/
@JsonIgnore
private Integer revision;
/**
* 删除标记
*/
@JsonIgnore
private String delFlag;
/**
* 创建人
*/
@JsonIgnore
private String createdBy;
/**
* 创建时间
*/
@JsonIgnore
private Date createdTime;
/**
* 更新人
*/
@JsonIgnore
private String updatedBy;
/**
* 更新时间
*/
@JsonIgnore
private Date updatedTime;
}

18
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/agentservice/WorkCloseAgentServiceFormDTO.java

@ -0,0 +1,18 @@
package com.epmet.dto.form.agentservice;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.util.List;
/**
* 工作端代理服务办结
*/
@Data
public class WorkCloseAgentServiceFormDTO {
@NotBlank(message = "待办服务ID必填")
private String id;
private String processDesc;
private List<String> processAttachments;
}

35
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/lingshan/AgentServiceResiSubmitFormDTO.java

@ -0,0 +1,35 @@
package com.epmet.dto.form.lingshan;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;
@Data
public class AgentServiceResiSubmitFormDTO {
public interface Create extends CustomerClientShowGroup {}
@NotBlank(message = "网格ID不能为空", groups = { Create.class })
private String gridId;
@NotBlank(message = "服务类别不能为空", groups = { Create.class })
private String serviceCategory;
@NotBlank(message = "详细说明不能为空", groups = { Create.class })
private String content;
@NotBlank(message = "预约服务地点不能为空", groups = { Create.class })
private String exceptServeAddress;
@NotBlank(message = "联系人不能为空", groups = { Create.class })
private String contactName;
@NotBlank(message = "联系电话不能为空", groups = { Create.class })
private String contactMobile;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@NotNull(message = "预约服务时间不能为空", groups = { Create.class })
private Date exceptServeTime;
private List<String> attachmentsList;
}

59
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/lingshan/LingshanOfficeHallServiceRecordPageFormDTO.java

@ -0,0 +1,59 @@
package com.epmet.dto.form.lingshan;
import com.epmet.commons.tools.dto.form.PageFormDTO;
import lombok.Data;
/**
* @Description
* @Author yzm
* @Date 2023/5/15 16:31
*/
@Data
public class LingshanOfficeHallServiceRecordPageFormDTO extends PageFormDTO {
private String orgId;
private String orgType;
/**
* 事项类型
*/
private String categoryCode;
/**
* 事项说明
*/
private String content;
/**
* 满意度评价-1不满意0基本满意1非常满意
*/
private Integer satisfication;
/**
* 申请开始日期
*/
private String applicantStartDate;
/**
* 申请结束日期
*/
private String applicantEndDate;
/**
* 办结日期
*/
// @DateTimeFormat(pattern = "yyyy-MM-dd")
// @JsonFormat(pattern = "yyyy-MM-dd")
private String closeStartDate;
// @DateTimeFormat(pattern = "yyyy-MM-dd")
// @JsonFormat(pattern = "yyyy-MM-dd")
private String closeEndDate;
/**
* 未办结0已办结1
*/
private String status;
//tokenDto.
private String customerId;
//tokenDto.
private String staffId;
}

17
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/LingShanPartyUnitRstDTO.java

@ -0,0 +1,17 @@
package com.epmet.dto.result;
import lombok.Data;
/**
* @Description 灵山联建单位
* @Author wangxianzhang
* @Time 2023/5/12 2:38 PM
*/
@Data
public class LingShanPartyUnitRstDTO {
private String orgName;
private String longitude;
private String latitude;
}

35
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/agentservice/AgentServiceList4WorkPcResultDTO.java

@ -0,0 +1,35 @@
package com.epmet.dto.result.agentservice;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
* @Description PC工作端-服务列表
* @Author wangxianzhang
* @Time 2023/5/10 2:58 PM
*/
@Data
public class AgentServiceList4WorkPcResultDTO {
private String id;
private String orgNamePath;
private String serviceCategory;
private String serviceCategoryName;
private String applicantName;
@JsonFormat(pattern = "yyyy-MM-dd")
private Date createdTime;
private String agentName;
private Integer processStatus;
private String processStatusDisplay;
@JsonFormat(pattern = "yyyy-MM-dd")
private Date processTime;
private Integer satisfaction;
private String content;
private List<String> attachments;
}

57
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/agentservice/AgentServiceTrendAnalysisRstDTO.java

@ -0,0 +1,57 @@
package com.epmet.dto.result.agentservice;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @Description
* {
* "time":"1月",
* "data":[
* {
* "name": "受理数",
* "value": 140
* },
* {
* "name": "办结率",
* "value": 95.3
* }
* ]
* },
* @Author wangxianzhang
* @Time 2023/5/16 1:38 PM
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class AgentServiceTrendAnalysisRstDTO {
// 1月
private String time;
//
private List<DataObj> data;
public static class DataObj {
private String name;
private Integer value;
public DataObj() {
}
public DataObj(String name, Integer value) {
this.name = name;
this.value = value;
}
public String getName() {
return name;
}
public Integer getValue() {
return value;
}
}
}

28
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/agentservice/LingShanAgentServiceCategoryResultDTO.java

@ -0,0 +1,28 @@
package com.epmet.dto.result.agentservice;
import lombok.Data;
@Data
public class LingShanAgentServiceCategoryResultDTO {
/**
* 租户号
*/
private String id;
/**
* 类别名称
*/
private String categoryName;
/**
* 描述
*/
private String description;
/**
* 图标
*/
private String iconUrl;
}

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

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

@ -0,0 +1,29 @@
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;
/**
* 经度
*/
private String longitude;
/**
* 纬度
*/
private String latitude;
}

48
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/agentservice/ResiMyCreatedAgentServiceResultDTO.java

@ -0,0 +1,48 @@
package com.epmet.dto.result.agentservice;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
import java.util.List;
@Data
public class ResiMyCreatedAgentServiceResultDTO {
private String id;
private String serviceCategory;
private String serviceCategoryName;
private String content;
private Date createdTime;
// 待受理
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date exceptServeTime;
private String exceptServeAddress;
/**
* 处理时间
*/
private Date processTime;
/**
* 处理说明
*/
private String processDesc;
/**
* 办结时间
*/
private Date closeTime;
/**
* 办结说明
*/
private String closeDesc;
private Integer processStatus;
private String processStatusName;
private Integer satisfaction;
private List<String> attachments;
}

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

@ -0,0 +1,20 @@
package com.epmet.dto.result.agentservice;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Description 灵山大屏服务类别统计分析
* @Author wangxianzhang
* @Time 2023/5/16 12:48 PM
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ScreenAgentServiceCategoryAnalysisRstDTO {
private String name;
private Integer value;
}

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

25
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/agentservice/WorkServiceAgentResultDTO.java

@ -0,0 +1,25 @@
package com.epmet.dto.result.agentservice;
import lombok.Data;
import java.util.Date;
/**
* @Description 工作单-服务代办列表
* @Author wangxianzhang
* @Time 2023/5/9 10:52 AM
*/
@Data
public class WorkServiceAgentResultDTO {
private Integer serviceCategory;
private String serviceCategoryName;
private Date createdTime;
private String content;
// 待受理
private Date exceptServeTime;
private String exceptServeAddress;
}

25
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/EpmetHeartOpenFeignClient.java

@ -17,15 +17,13 @@ import com.epmet.dto.form.resi.ResiVolunteerAuthenticateFormDTO;
import com.epmet.dto.form.resi.ResisByPolicyRulesFormDTO;
import com.epmet.dto.form.resi.VolunteerCommonFormDTO;
import com.epmet.dto.result.CheckStaffInfoResultDTO;
import com.epmet.dto.result.LingShanPartyUnitRstDTO;
import com.epmet.dto.result.PartyUnitListResultDTO;
import com.epmet.dto.result.demand.IcResiDemandDictDTO;
import com.epmet.dto.result.resi.PageVolunteerInfoResultDTO;
import com.epmet.feign.fallback.EpmetHeartOpenFeignClientFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@ -182,4 +180,23 @@ public interface EpmetHeartOpenFeignClient {
@PostMapping("/heart/userdemand/deleteByOriginId/{originId}/{origin}")
Result<Integer> deleteUserDemandByOriginId(@PathVariable("originId") String originId, @PathVariable("origin")String origin);
/**
* @Description: 组织下的联建单位数量
* @param agencyId: 组织id
* @Return void
* @Author: wangxianzhang
* @Date: 2023/5/12 10:22 AM
*/
@RequestMapping("/heart/icpartyunit/qtyInAgency")
Result<Integer> qtyInAgency(@RequestParam(value = "agencyId", required = false) String agencyId);
/**
* @Description: 灵山大屏联建单位列表
* @param orgId:
* @Return com.epmet.commons.tools.utils.Result
* @Author: wangxianzhang
* @Date: 2023/5/12 2:36 PM
*/
@GetMapping("/heart/icpartyunit/lingshan/partyUnitList")
Result<List<LingShanPartyUnitRstDTO>> lingshanPartyUnitList(@RequestParam(value = "orgId", required = false) String orgId);
}

11
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/fallback/EpmetHeartOpenFeignClientFallback.java

@ -18,6 +18,7 @@ import com.epmet.dto.form.resi.ResiVolunteerAuthenticateFormDTO;
import com.epmet.dto.form.resi.ResisByPolicyRulesFormDTO;
import com.epmet.dto.form.resi.VolunteerCommonFormDTO;
import com.epmet.dto.result.CheckStaffInfoResultDTO;
import com.epmet.dto.result.LingShanPartyUnitRstDTO;
import com.epmet.dto.result.PartyUnitListResultDTO;
import com.epmet.dto.result.demand.IcResiDemandDictDTO;
import com.epmet.dto.result.resi.PageVolunteerInfoResultDTO;
@ -175,4 +176,14 @@ public class EpmetHeartOpenFeignClientFallback implements EpmetHeartOpenFeignCli
public Result<Integer> deleteUserDemandByOriginId(String originId, String origin) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_HEART_SERVER, "deleteUserDemandByOriginId", originId,origin);
}
@Override
public Result<Integer> qtyInAgency(String agencyId) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_HEART_SERVER, "qtyInAgency", agencyId);
}
@Override
public Result<List<LingShanPartyUnitRstDTO>> lingshanPartyUnitList(String orgId) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_HEART_SERVER, "lingshanPartyUnitList", orgId);
}
}

29
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcPartyUnitController.java

@ -367,4 +367,33 @@ public class IcPartyUnitController implements ResultDataResolver {
}
}
}
/**
* @Description: 组织下的联建单位数量
* @param agencyId: 组织id
* @Return void
* @Author: wangxianzhang
* @Date: 2023/5/12 10:22 AM
*/
@RequestMapping("qtyInAgency")
public Result<Integer> qtyInAgency(@RequestParam(value = "agencyId", required = false) String agencyId) {
Integer q = icPartyUnitService.qtyInAgency(agencyId);
return new Result<Integer>().ok(q);
}
/**
* @Description: 灵山大屏联建单位列表
* @param orgId:
* @Return com.epmet.commons.tools.utils.Result
* @Author: wangxianzhang
* @Date: 2023/5/12 2:36 PM
*/
@GetMapping("lingshan/partyUnitList")
public Result<List<LingShanPartyUnitRstDTO>> lingshanScreenPartyUnitList(@RequestParam(value = "orgId", required = false) String orgId) {
List<LingShanPartyUnitRstDTO> l = icPartyUnitService.lingshanScreenPartyUnitList(orgId);
return new Result<List<LingShanPartyUnitRstDTO>>().ok(l);
}
}

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

@ -0,0 +1,320 @@
package com.epmet.controller;
import com.epmet.LingShanAgentServiceProcessStatusEnum;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.ValidateException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.DateUtils;
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.*;
import com.epmet.service.LingShanAgentServiceService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* @Description 灵山-服务代办
* @Author wangxianzhang
* @Time 2023/5/6 2:49 PM
*/
@RestController
@RequestMapping("lingshan/serviceAgent")
public class LingShanAgentServiceController {
@Autowired
private LingShanAgentServiceService lingShanServiceAgentService;
/**
* @Description: 服务分类
* @param :
* @Return com.epmet.commons.tools.utils.Result
* @Author: wangxianzhang
* @Date: 2023/5/11 2:57 PM
*/
@GetMapping("serviceCategoryList")
public Result<List<LingShanAgentServiceCategoryResultDTO>> listServiceCategories() {
List<LingShanAgentServiceCategoryResultDTO> l = lingShanServiceAgentService.listServiceCategories();
return new Result<List<LingShanAgentServiceCategoryResultDTO>>().ok(l);
}
/**
* @description: 居民端-提交代办服务
* @param form:
* @return
* @author: WangXianZhang
* @date: 2023/5/6 3:02 PM
*/
@PostMapping("resi/submit")
public Result resiSubmit(@RequestBody AgentServiceResiSubmitFormDTO form) {
ValidatorUtils.validateEntity(form, AgentServiceResiSubmitFormDTO.Create.class);
lingShanServiceAgentService.resiSubmit(form);
return new Result();
}
/**
* @description: 我创建的
* @return
* @author: WangXianZhang
* @date: 2023/5/9 10:06 AM
*/
@GetMapping("resi/mycreated")
public Result<PageData<ResiMyCreatedAgentServiceResultDTO>> myCreated(@RequestParam(value = "processStatus", required = false) Integer processStatus,
@RequestParam("gridId") String gridId,
@RequestParam("pageNo") Integer pageNo,
@RequestParam("pageSize") Integer pageSize) {
PageData<ResiMyCreatedAgentServiceResultDTO> pd = lingShanServiceAgentService.myCreatedList(processStatus, gridId, pageNo, pageSize);
return new Result().ok(pd);
}
/**
* @Description: 撤回
* @param form:
* @Return com.epmet.commons.tools.utils.Result
* @Author: wangxianzhang
* @Date: 2023/5/10 11:20 AM
*/
@PostMapping("resi/withdraw")
public Result resiWithDraw(@RequestBody Map<String, String> form) {
String id = form.get("id");
if (StringUtils.isBlank(id)) {
throw new ValidateException("缺少ID参数");
}
lingShanServiceAgentService.resiWithDraw(id);
return new Result();
}
/**
* @Description: 居民端-评价
* @param form:
* @Return com.epmet.commons.tools.utils.Result
* @Author: wangxianzhang
* @Date: 2023/5/10 2:53 PM
*/
@PostMapping("resi/evaluate")
public Result resiEvaluate(@RequestBody Map<String, Object> form) {
String id = (String) form.get("id");
Integer satisfication = (Integer) form.get("satisfication");
if (StringUtils.isAnyBlank(id) || satisfication == null) {
throw new ValidateException("缺少ID参数");
}
lingShanServiceAgentService.resiEvaluate(id, satisfication);
return new Result();
}
/**
* @description: 工作端-服务列表
* 这个接口返回的跟居民端一样所以暂时就调用居民端一样的接口了
* @param processStatus:
* @param gridId:
* @return
* @author: WangXianZhang
* @date: 2023/5/9 10:59 AM
*/
@GetMapping("work/serviceList")
public Result<PageData<ResiMyCreatedAgentServiceResultDTO>> workServiceList(@RequestParam(value = "processStatus", required = false) Integer processStatus,
@RequestParam("gridId") String gridId,
@RequestParam("pageNo") Integer pageNo,
@RequestParam("pageSize") Integer pageSize) {
PageData<ResiMyCreatedAgentServiceResultDTO> pd = lingShanServiceAgentService.myCreatedList(processStatus, gridId, pageNo, pageSize);
return new Result().ok(pd);
}
/**
* @description: 工作端提交处理没几个参数不值当用dto了
* @return
* @author: WangXianZhang
* @date: 2023/5/9 11:10 AM
*/
@PostMapping("work/process")
public Result workProcess(@RequestBody Map<String, Object> input) {
String id = (String) input.get("id");
Integer processType = (Integer) input.get("processType");
String processDesc = (String) input.get("processDesc");
if (StringUtils.isAnyBlank(id) || processType == null) {
throw new ValidateException("参数错误");
}
LingShanAgentServiceProcessStatusEnum processTypeEnum = LingShanAgentServiceProcessStatusEnum.getByStatus(processType);
// 如果是驳回,那么描述必填
if (processTypeEnum == LingShanAgentServiceProcessStatusEnum.REJECTED
&& StringUtils.isBlank(processDesc)) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), null, "驳回操作时,驳回原因为必填项");
}
lingShanServiceAgentService.workProcess(id, processType, processDesc);
return new Result();
}
/**
* @description: 工作端办结
* @param input:
* @return
* @author: WangXianZhang
* @date: 2023/5/9 2:57 PM
*/
@PostMapping("work/close")
public Result workClose(@RequestBody WorkCloseAgentServiceFormDTO input) {
ValidatorUtils.validateEntity(input);
String id = input.getId();
String processDesc = input.getProcessDesc();
List<String> processAttachments = input.getProcessAttachments();
lingShanServiceAgentService.workClose(id, processDesc, processAttachments);
return new Result();
}
/**
* @Description: 删除
* @param input:
* @Return com.epmet.commons.tools.utils.Result
* @Author: wangxianzhang
* @Date: 2023/5/10 5:29 PM
*/
@PostMapping("workpc/delete")
public Result workPcDelete(@RequestBody Map<String, Object> input) {
String id = (String) input.get("id");
if (StringUtils.isBlank(id)) {
throw new ValidateException("ID为必填项");
}
lingShanServiceAgentService.workPcDelete(id);
return new Result();
}
/**
* @Description: pc工作端服务列表
* @param orgId:
* @param orgType:
* @param serviceCategory:
* @param content:
* @param agentName:
* @param processTimeStartStr:
* @param processTimeEndStr:
* @Return com.epmet.commons.tools.utils.Result<com.epmet.commons.tools.page.PageData<com.epmet.dto.result.agentservice.AgentServiceList4WorkPcResultDTO>>
* @Author: wangxianzhang
* @Date: 2023/5/10 3:00 PM
*/
@GetMapping("workpc/serviceList")
public Result<PageData<AgentServiceList4WorkPcResultDTO>> workPcServiceList(@RequestParam(value = "orgId", required = false) String orgId,
@RequestParam(value = "orgType", required = false) String orgType,
@RequestParam(value = "serviceCategory", required = false) String serviceCategory,
@RequestParam(value = "content", required = false) String content,
@RequestParam(value = "agentName", required = false) String agentName,
@RequestParam(value = "processTimeStart", required = false) String processTimeStartStr,
@RequestParam(value = "processTimeEnd", required = false) String processTimeEndStr,
@RequestParam(value = "pageNo") Integer pageNo,
@RequestParam(value = "pageSize") Integer pageSize) {
Date processTimeStart = null, processTimeEnd = null;
if (StringUtils.isNotBlank(processTimeStartStr)) {
processTimeStart = DateUtils.parse(processTimeStartStr, DateUtils.DATE_PATTERN);
}
if (StringUtils.isNotBlank(processTimeEndStr)) {
processTimeEnd = DateUtils.parse(processTimeEndStr, DateUtils.DATE_PATTERN);
}
PageData<AgentServiceList4WorkPcResultDTO> pd = lingShanServiceAgentService.workPcServiceList(orgId, orgType, serviceCategory, content, agentName,
processTimeStart, processTimeEnd, pageNo, pageSize);
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);
}
/**
* @Description: 服务类型数量分析
* @param orgType:
* @param orgId:
* @Return com.epmet.commons.tools.utils.Result
* @Author: wangxianzhang
* @Date: 2023/5/16 12:47 PM
*/
@GetMapping("screen/serviceCategoryAnalysis")
public Result<List<ScreenAgentServiceCategoryAnalysisRstDTO>> serviceCategoryAnalysis(@RequestParam("orgType") String orgType,
@RequestParam("orgId") String orgId) {
List<ScreenAgentServiceCategoryAnalysisRstDTO> rl = lingShanServiceAgentService.serviceCategoryAnalysis(orgType, orgId);
return new Result<List<ScreenAgentServiceCategoryAnalysisRstDTO>>().ok(rl);
}
/**
* @Description: 代办服务趋势分析
* @param orgType:
* @param orgId:
* @Return com.epmet.commons.tools.utils.Result<java.util.List<com.epmet.dto.result.agentservice.AgentServiceTrendAnalysisRstDTO>>
* @Author: wangxianzhang
* @Date: 2023/5/16 1:39 PM
*/
@GetMapping("screen/serviceTrendAnalysis")
public Result<List<AgentServiceTrendAnalysisRstDTO>> serviceTrendAnalysis(@RequestParam("orgType") String orgType,
@RequestParam("orgId") String orgId) {
List<AgentServiceTrendAnalysisRstDTO> rl = lingShanServiceAgentService.serviceTrendAnalysis(orgType, orgId);
return new Result<List<AgentServiceTrendAnalysisRstDTO>>().ok(rl);
}
}

176
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/LingshanOfficeHallServiceRecordController.java

@ -0,0 +1,176 @@
package com.epmet.controller;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.metadata.style.WriteCellStyle;
import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.aop.NoRepeatSubmit;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.ExcelUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.LingshanOfficeHallServiceRecordDTO;
import com.epmet.dto.form.lingshan.LingshanOfficeHallServiceRecordPageFormDTO;
import com.epmet.excel.LingshanOfficeHallServiceRecordExportExcel;
import com.epmet.service.LingshanOfficeHallServiceRecordService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import java.util.List;
/**
* 灵山_办事大厅服务记录
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2023-05-15
*/
@Slf4j
@RestController
@RequestMapping("lingshanOfficeHallServiceRecord")
public class LingshanOfficeHallServiceRecordController {
@Autowired
private LingshanOfficeHallServiceRecordService lingshanOfficeHallServiceRecordService;
/**
* 分页列表
*
* @param formDTO
* @return
*/
@PostMapping("page")
public Result<PageData<LingshanOfficeHallServiceRecordDTO>> page(@LoginUser TokenDto tokenDto, @RequestBody LingshanOfficeHallServiceRecordPageFormDTO formDTO) {
formDTO.setCustomerId(tokenDto.getCustomerId());
formDTO.setStaffId(tokenDto.getUserId());
PageData<LingshanOfficeHallServiceRecordDTO> page = lingshanOfficeHallServiceRecordService.page(formDTO);
return new Result<PageData<LingshanOfficeHallServiceRecordDTO>>().ok(page);
}
/**
* 办事大厅-查看详情
*
* @param id
* @return
*/
@RequestMapping(value = "detail/{id}", method = {RequestMethod.POST})
public Result<LingshanOfficeHallServiceRecordDTO> get(@PathVariable("id") String id) {
LingshanOfficeHallServiceRecordDTO data = lingshanOfficeHallServiceRecordService.get(id);
return new Result<LingshanOfficeHallServiceRecordDTO>().ok(data);
}
/**
* 工作端添加
*
* @param dto
* @return
*/
@NoRepeatSubmit
@PostMapping("save")
public Result save(@LoginUser TokenDto tokenDto, @RequestBody LingshanOfficeHallServiceRecordDTO dto) {
dto.setCustomerId(tokenDto.getCustomerId());
dto.setSourceType("gov_pc");
ValidatorUtils.validateEntity(dto, LingshanOfficeHallServiceRecordDTO.AddShowGroup.class, LingshanOfficeHallServiceRecordDTO.AddInternalGroup.class);
return new Result().ok(lingshanOfficeHallServiceRecordService.save(dto));
}
/**
* 工作端修改
*
* @param dto
* @return
*/
@NoRepeatSubmit
@PostMapping("update")
public Result update(@LoginUser TokenDto tokenDto, @RequestBody LingshanOfficeHallServiceRecordDTO dto) {
dto.setCustomerId(tokenDto.getCustomerId());
dto.setSourceType("gov_pc");
ValidatorUtils.validateEntity(dto, LingshanOfficeHallServiceRecordDTO.UpdateShowGroup.class, LingshanOfficeHallServiceRecordDTO.UpdateInternalGroup.class);
lingshanOfficeHallServiceRecordService.update(dto);
return new Result();
}
/**
* 批量删除
* 单挑删除
*
* @param ids
* @return
*/
@PostMapping("delete")
public Result delete(@RequestBody List<String> ids) {
if (CollectionUtils.isNotEmpty(ids)) {
lingshanOfficeHallServiceRecordService.delete(ids);
}
return new Result();
}
@PostMapping("export")
public void exportEnterprise(@LoginUser TokenDto tokenDto, @RequestBody LingshanOfficeHallServiceRecordPageFormDTO formDTO, HttpServletResponse response) throws IOException {
formDTO.setCustomerId(tokenDto.getCustomerId());
formDTO.setStaffId(tokenDto.getUserId());
ExcelWriter excelWriter = null;
formDTO.setPageNo(NumConstant.ONE);
formDTO.setPageSize(NumConstant.TEN_THOUSAND);
try {
String fileName = "办事大厅" + DateUtils.format(new Date()) + ".xlsx";
// 头的策略
WriteCellStyle headWriteCellStyle = new WriteCellStyle();
// 背景设置为红色
headWriteCellStyle.setFillForegroundColor(IndexedColors.PALE_BLUE.getIndex());
WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
contentWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
HorizontalCellStyleStrategy horizontalCellStyleStrategy = new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);
FreezeAndFilter writeHandler = new FreezeAndFilter();
excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel(fileName, response), LingshanOfficeHallServiceRecordExportExcel.class)
.registerWriteHandler(horizontalCellStyleStrategy)
.registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
.registerWriteHandler(writeHandler).build();
WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").registerWriteHandler(new FreezeAndFilter()).build();
PageData<LingshanOfficeHallServiceRecordDTO> data = null;
List<LingshanOfficeHallServiceRecordExportExcel> list = null;
do {
data = lingshanOfficeHallServiceRecordService.page(formDTO);
list = ConvertUtils.sourceToTarget(data.getList(), LingshanOfficeHallServiceRecordExportExcel.class);
formDTO.setPageNo(formDTO.getPageNo() + NumConstant.ONE);
excelWriter.write(list, writeSheet);
} while (CollectionUtils.isNotEmpty(list) && list.size() == formDTO.getPageSize());
} catch (EpmetException e) {
response.reset();
response.setCharacterEncoding("UTF-8");
response.setHeader("content-type", "application/json; charset=UTF-8");
PrintWriter printWriter = response.getWriter();
Result<Object> result = new Result<>().error(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), e.getMsg());
printWriter.write(JSON.toJSONString(result));
printWriter.close();
} catch (Exception e) {
log.error("办事大厅列表导出异常export exception", e);
} finally {
if (excelWriter != null) {
excelWriter.finish();
}
}
}
}

16
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/LingshanAgentServiceCategoryDao.java

@ -0,0 +1,16 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.entity.LingshanAgentServiceCategoryEntity;
import org.apache.ibatis.annotations.Mapper;
/**
* 待办服务类别
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2023-05-06
*/
@Mapper
public interface LingshanAgentServiceCategoryDao extends BaseDao<LingshanAgentServiceCategoryEntity> {
}

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

@ -0,0 +1,29 @@
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;
/**
* 待办服务记录
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2023-05-06
*/
@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);
}

30
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/LingshanOfficeHallServiceRecordDao.java

@ -0,0 +1,30 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.LingshanOfficeHallServiceRecordDTO;
import com.epmet.entity.LingshanOfficeHallServiceRecordEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 灵山_办事大厅服务记录
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2023-05-15
*/
@Mapper
public interface LingshanOfficeHallServiceRecordDao extends BaseDao<LingshanOfficeHallServiceRecordEntity> {
List<LingshanOfficeHallServiceRecordDTO> pageList(@Param("customerId") String customerId,
@Param("orgIdPath") String orgIdPath,
@Param("categoryCode") String categoryCode,
@Param("content") String content,
@Param("satisfication") Integer satisfication,
@Param("applicantStartDate") String applicantStartDate,
@Param("applicantEndDate") String applicantEndDate,
@Param("closeStartDate") String closeStartDate,
@Param("closeEndDate") String closeEndDate,
@Param("status") String status);
}

44
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/LingshanAgentServiceCategoryEntity.java

@ -0,0 +1,44 @@
package com.epmet.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 待办服务类别
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2023-05-06
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("lingshan_agent_service_category")
public class LingshanAgentServiceCategoryEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 租户号
*/
private String customerId;
/**
* 类别名称
*/
private String categoryName;
/**
* 描述
*/
private String description;
/**
* 图标
*/
private String iconUrl;
}

133
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/LingshanAgentServiceRecordEntity.java

@ -0,0 +1,133 @@
package com.epmet.entity;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 待办服务记录
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2023-05-06
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("lingshan_agent_service_record")
public class LingshanAgentServiceRecordEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 租户号
*/
@TableField(fill = FieldFill.INSERT)
private String customerId;
/**
* 申请人ID(居民端用户ID)
*/
private String applicantId;
/**
* 申请人姓名
*/
private String applicantName;
/**
* 代办员ID默认使用空字符串
*/
private String agentId;
/**
* 代办员姓名
*/
private String agentName;
/**
* 提交者所在网格ID
*/
private String gridId;
/**
* 组织id路径含本级含网格id
*/
private String orgIdPath;
private String attachments;
/**
* 服务类型id
*/
private String serviceCategory;
/**
* 预约服务时间
*/
private Date exceptServeTime;
/**
* 预约服务地点
*/
private String exceptServeAddress;
/**
* 受理时间状态变为受理的时间
*/
private Date processTime;
private String processDesc;
private String processAttachments;
/**
* 联系人姓名
*/
private String contactName;
/**
* 联系电话
*/
private String contactMobile;
/**
* 办理状态0待受理1已受理2已驳回3已办结-1已撤回
*/
private Integer processStatus;
/**
* 办结时间
*/
private Date closeTime;
/**
* 办结说明
*/
private String closeDesc;
/**
* 内容详细说明
*/
private String content;
/**
* 满意度评价-1不满意0基本满意1非常满意
*/
private Integer satisfication;
/**
* 经度
*/
private String longitude;
/**
* 纬度
*/
private String latitude;
private transient int qty = 0;
}

118
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/LingshanOfficeHallServiceRecordEntity.java

@ -0,0 +1,118 @@
package com.epmet.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 灵山_办事大厅服务记录
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2023-05-15
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("lingshan_office_hall_service_record")
public class LingshanOfficeHallServiceRecordEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 租户号
*/
private String customerId;
/**
* 工作人员录入gov_pc居民端小程序resi_mp
*/
private String sourceType;
/**
* 事项类型
*/
private String categoryCode;
/**
* 事项说明
*/
private String content;
/**
* 申请人所属组织id或者网格id
*/
private String applicantOrgId;
/**
* agency或者grid
*/
private String applicantOrgType;
/**
* ORG_ID全路径
*/
private String applicantOrgIdPath;
/**
* 申请人所属组织名称
*/
private String applicantOrgName;
/**
* 申请人姓名
*/
private String applicantName;
/**
* 申请人联系电话
*/
private String applicantMobile;
/**
* 申请人身份证号
*/
private String applicantIdCard;
/**
* 申请日期
*/
private Date applicantTime;
/**
* 办理人姓名
*/
private String transactorName;
/**
* 未办结0已办结1
*/
private String status;
/**
* 办结日期
*/
private Date closeTime;
/**
* 满意度评价-1不满意0基本满意1非常满意
*/
private Integer satisfication;
/**
* 本条数据所属组织id/所属网格id
*/
private String orgId;
/**
* agency或者grid
*/
private String orgType;
/**
* 本条数据所属组织的org_id_path
*/
private String orgIdPath;
}

92
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/LingshanOfficeHallServiceRecordExportExcel.java

@ -0,0 +1,92 @@
package com.epmet.excel;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
/**
* @Description
* @Author yzm
* @Date 2023/5/15 18:24
*/
@Data
public class LingshanOfficeHallServiceRecordExportExcel {
/**
* 申请人所属组织名称
*/
@ExcelProperty(value = "所属组织")
@ColumnWidth(30)
private String applicantOrgName;
/**
* 类别名称
* 举例营业执照服务食品许可证服务医疗保险业务养老保险业务
*/
@ExcelProperty(value = "事项类型")
@ColumnWidth(25)
private String categoryName;
/**
* 事项说明
*/
@ExcelProperty(value = "事项说明")
@ColumnWidth(40)
private String content;
/**
* 申请人姓名
*/
@ExcelProperty(value = "申请人")
@ColumnWidth(30)
private String applicantName;
/**
* 申请人联系电话
*/
@ExcelProperty(value = "申请人联系电话")
@ColumnWidth(30)
private String applicantMobile;
/**
* 申请人身份证号
*/
@ExcelProperty(value = "申请人身份证号")
@ColumnWidth(30)
private String applicantIdCard;
@ExcelProperty(value = "申请日期")
@ColumnWidth(30)
@JsonFormat(pattern = "yyyy-MM-dd")
private Date applicantTime;
/**
* 办理人姓名
*/
@ExcelProperty(value = "办理人")
@ColumnWidth(30)
private String transactorName;
@ExcelProperty(value = "办理状态")
@ColumnWidth(30)
private String statusName;
/**
* 办结日期
*/
@ExcelProperty(value = "办结日期")
@ColumnWidth(30)
@JsonFormat(pattern = "yyyy-MM-dd")
private Date closeTime;
/**
* 满意度评价-1不满意0基本满意1非常满意
*/
@ExcelProperty(value = "满意度")
@ColumnWidth(25)
private String satisficationName;
}

9
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcPartyUnitService.java

@ -8,10 +8,7 @@ import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.dto.IcPartyUnitDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.form.demand.ServiceQueryFormDTO;
import com.epmet.dto.result.CheckStaffInfoResultDTO;
import com.epmet.dto.result.PartyTypepercentResultDTO;
import com.epmet.dto.result.PartyUnitDistributionResultDTO;
import com.epmet.dto.result.PartyUnitListResultDTO;
import com.epmet.dto.result.*;
import com.epmet.dto.result.demand.OptionDTO;
import com.epmet.entity.IcPartyUnitEntity;
@ -181,4 +178,8 @@ public interface IcPartyUnitService extends BaseService<IcPartyUnitEntity> {
* @param filePath
*/
void execAsyncExcelImport(Path filePath, String importTaskId,String customerId,String userId);
Integer qtyInAgency(String agencyId);
List<LingShanPartyUnitRstDTO> lingshanScreenPartyUnitList(String orgId);
}

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

@ -0,0 +1,41 @@
package com.epmet.service;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.form.lingshan.AgentServiceResiSubmitFormDTO;
import com.epmet.dto.result.agentservice.*;
import java.util.Date;
import java.util.List;
public interface LingShanAgentServiceService {
void resiSubmit(AgentServiceResiSubmitFormDTO form);
PageData<ResiMyCreatedAgentServiceResultDTO> myCreatedList(Integer processStatus, String gridId, Integer pageNo, Integer pageSize);
PageData<WorkServiceAgentResultDTO> workServiceList(Integer processStatus, String gridId);
void workProcess(String id, Integer processType, String processDesc);
void workClose(String id, String processDesc, List<String> processAttachments);
void resiWithDraw(String id);
void resiEvaluate(String id, Integer satisfication);
PageData<AgentServiceList4WorkPcResultDTO> workPcServiceList(String orgId, String orgType, String serviceCategory, String content,
String agentName, Date processTimeStart, Date processTimeEnd, Integer pageNo, Integer pageSize);
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);
List<ScreenAgentServiceCategoryAnalysisRstDTO> serviceCategoryAnalysis(String orgType, String orgId);
List<AgentServiceTrendAnalysisRstDTO> serviceTrendAnalysis(String orgType, String orgId);
}

70
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/LingshanOfficeHallServiceRecordService.java

@ -0,0 +1,70 @@
package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.LingshanOfficeHallServiceRecordDTO;
import com.epmet.dto.form.lingshan.LingshanOfficeHallServiceRecordPageFormDTO;
import com.epmet.entity.LingshanOfficeHallServiceRecordEntity;
import java.util.List;
/**
* 灵山_办事大厅服务记录
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2023-05-15
*/
public interface LingshanOfficeHallServiceRecordService extends BaseService<LingshanOfficeHallServiceRecordEntity> {
/**
* 办事大厅-分页列表
*
* @param formDTO
* @return PageData<LingshanOfficeHallServiceRecordDTO>
* @author generator
* @date 2023-05-15
*/
PageData<LingshanOfficeHallServiceRecordDTO> page(LingshanOfficeHallServiceRecordPageFormDTO formDTO);
/**
* 单条查询
*
* @param id
* @return LingshanOfficeHallServiceRecordDTO
* @author generator
* @date 2023-05-15
*/
LingshanOfficeHallServiceRecordDTO get(String id);
/**
* 默认保存
*
* @param dto
* @return void
* @author generator
* @date 2023-05-15
*/
String save(LingshanOfficeHallServiceRecordDTO dto);
/**
* 默认更新
*
* @param dto
* @return void
* @author generator
* @date 2023-05-15
*/
void update(LingshanOfficeHallServiceRecordDTO dto);
/**
* 批量删除
*
* @param ids
* @return void
* @author generator
* @date 2023-05-15
*/
void delete(List<String> ids);
}

29
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyUnitServiceImpl.java

@ -41,10 +41,7 @@ import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.security.user.LoginUserUtil;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.FileUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.SpringContextUtils;
import com.epmet.commons.tools.utils.*;
import com.epmet.constant.UserDemandConstant;
import com.epmet.constants.ImportTaskConstants;
import com.epmet.dao.IcPartyUnitDao;
@ -725,4 +722,28 @@ public class IcPartyUnitServiceImpl extends BaseServiceImpl<IcPartyUnitDao, IcPa
}
return false;
}
@Override
public Integer qtyInAgency(String agencyId) {
AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(agencyId);
String orgIdPath = PidUtils.convertPid2OrgIdPath(agencyInfo.getId(), agencyInfo.getPids());
LambdaQueryWrapper<IcPartyUnitEntity> q = new LambdaQueryWrapper<>();
q.and(q1 -> q1.eq(IcPartyUnitEntity::getAgencyId, agencyId).or(q2 -> q2.eq(IcPartyUnitEntity::getPids, orgIdPath)));
return baseDao.selectCount(q);
}
@Override
public List<LingShanPartyUnitRstDTO> lingshanScreenPartyUnitList(String orgId) {
LambdaQueryWrapper<IcPartyUnitEntity> q = new LambdaQueryWrapper<>();
q.eq(IcPartyUnitEntity::getAgencyId, orgId);
return baseDao.selectList(q).stream().map(e -> {
LingShanPartyUnitRstDTO d = new LingShanPartyUnitRstDTO();
d.setLatitude(e.getLatitude());
d.setLongitude(e.getLongitude());
d.setOrgName(e.getUnitName());
return d;
}).collect(Collectors.toList());
}
}

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

@ -0,0 +1,623 @@
package com.epmet.service.impl;
import cn.hutool.http.useragent.UserAgentInfo;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache;
import com.epmet.commons.tools.redis.common.bean.GridInfoCache;
import com.epmet.commons.tools.redis.common.bean.ResiUserInfoCache;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.EpmetRequestHolder;
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.*;
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;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.redisson.api.RLock;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
@Service
@Slf4j
public class LingShanAgentServiceServiceImpl implements LingShanAgentServiceService, ResultDataResolver {
@Autowired
private LingshanAgentServiceCategoryDao agentServiceCategoryDao;
@Autowired
private LingshanAgentServiceRecordDao agentServiceRecordDao;
@Autowired
private DistributedLock distributedLock;
@Autowired
private EpmetUserRemoteService epmetUserRemoteService;
@Autowired
private DataAggregatorOpenFeignClient dataAggregatorOpenFeignClient;
@Autowired
private EpmetUserOpenFeignClient userOpenFeignClient;
public static final String AGENT_SERVICE_LOCK_PREFIX = "lingshan:agentservice:statuschange:";
@Override
public List<LingShanAgentServiceCategoryResultDTO> listServiceCategories() {
List<LingshanAgentServiceCategoryEntity> es = agentServiceCategoryDao.selectList(new LambdaQueryWrapper<>());
return ConvertUtils.sourceToTarget(es, LingShanAgentServiceCategoryResultDTO.class);
}
@Override
public void resiSubmit(AgentServiceResiSubmitFormDTO form) {
// 判断类别是否存在
if (agentServiceCategoryDao.selectById(form.getServiceCategory()) == null) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), null, "【代办服务】未找到指定的服务类别ID:" + form.getServiceCategory());
}
ResiUserInfoCache resiInfo = CustomerResiUserRedis.getUserBaseInfo(EpmetRequestHolder.getLoginUserId());
LingshanAgentServiceRecordEntity e2Insert = ConvertUtils.sourceToTarget(form, LingshanAgentServiceRecordEntity.class);
e2Insert.setAttachments(JSON.toJSONString(form.getAttachmentsList()));
e2Insert.setApplicantId(EpmetRequestHolder.getLoginUserId());
e2Insert.setApplicantName(resiInfo.getRealName());
e2Insert.setProcessStatus(LingShanAgentServiceProcessStatusEnum.WAIT_ACCEPT.getStatusCode()); //初始为待受理状态
GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(form.getGridId());
e2Insert.setOrgIdPath(PidUtils.convertPid2OrgIdPath(gridInfo.getId(), gridInfo.getPids()));
agentServiceRecordDao.insert(e2Insert);
}
@Override
public PageData<ResiMyCreatedAgentServiceResultDTO> myCreatedList(Integer processStatus, String gridId, Integer pageNo, Integer pageSize) {
LambdaQueryWrapper<LingshanAgentServiceRecordEntity> q = new LambdaQueryWrapper<>();
q.eq(processStatus != null, LingshanAgentServiceRecordEntity::getProcessStatus, processStatus);
q.eq(LingshanAgentServiceRecordEntity::getGridId, gridId);
PageHelper.startPage(pageNo, pageSize);
List<LingshanAgentServiceRecordEntity> l = agentServiceRecordDao.selectList(q);
List<ResiMyCreatedAgentServiceResultDTO> rl = l.stream().map(e -> {
ResiMyCreatedAgentServiceResultDTO d = ConvertUtils.sourceToTarget(e, ResiMyCreatedAgentServiceResultDTO.class);
d.setProcessStatusName(LingShanAgentServiceProcessStatusEnum.getByStatus(e.getProcessStatus()).getStatusName());
LingshanAgentServiceCategoryEntity sc = agentServiceCategoryDao.selectById(e.getServiceCategory());
if (sc != null) {
d.setServiceCategoryName(sc.getCategoryName());
} else {
log.error("【红色待办】居民-我创建的列表:未找到服务类别数据:{}", e.getServiceCategory());
}
// 反序列化附件列表
d.setAttachments(JSON.parseArray(e.getAttachments(), String.class));
return d;
}).collect(Collectors.toList());
return new PageData<>(rl, new PageInfo<>(l).getTotal());
}
@Override
public PageData<WorkServiceAgentResultDTO> workServiceList(Integer processStatus, String gridId) {
return null;
}
@Override
public void workProcess(String id, Integer processType, String processDesc) {
LingshanAgentServiceRecordEntity service;
if ((service = agentServiceRecordDao.selectById(id)) == null) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), null, "【代办服务】未找到指定的服务信息,ID:" + id);
}
RLock lock = distributedLock.getLock(AGENT_SERVICE_LOCK_PREFIX + id);
try {
// 执行状态变更校验
statusChangeCheck(service.getProcessStatus(), processType);
LingshanAgentServiceRecordEntity e2Update = new LingshanAgentServiceRecordEntity();
e2Update.setId(id);
// 处理,处理受理状态和描述,以及处理时间
e2Update.setProcessStatus(processType);
e2Update.setProcessDesc(processDesc);
if (LingShanAgentServiceProcessStatusEnum.ACCEPTED.getStatusCode() == processType.intValue()) {
// 如果是受理,则记录受理人和受理时间
LoginUserDetailsResultDTO loginUserDetails = epmetUserRemoteService.getLoginUserDetails();
e2Update.setAgentId(loginUserDetails.getUserId());
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(EpmetRequestHolder.getLoginUserCustomerId(), loginUserDetails.getUserId());
if (staffInfo != null) {
e2Update.setAgentName(staffInfo.getRealName());
}
}
e2Update.setProcessTime(new Date());
agentServiceRecordDao.updateById(e2Update);
} catch (Exception e) {
log.error("【待办服务】办结:分布式锁错误:" + ExceptionUtils.getErrorStackTrace(e));
throw e;
} finally {
// 释放锁
if (lock.isHeldByCurrentThread()) {
lock.unlock();
}
}
}
@Override
public void workClose(String id, String processDesc, List<String> processAttachments) {
LingshanAgentServiceRecordEntity service;
if ((service = agentServiceRecordDao.selectById(id)) == null) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), null, "【代办服务】未找到指定的服务信息,ID:" + id);
}
RLock lock = distributedLock.getLock(AGENT_SERVICE_LOCK_PREFIX + id);
try {
// 执行状态变更校验
LingShanAgentServiceProcessStatusEnum closeStatusEnum = LingShanAgentServiceProcessStatusEnum.CLOSED;
statusChangeCheck(service.getProcessStatus(), closeStatusEnum.getStatusCode());
Date now = new Date();
LingshanAgentServiceRecordEntity e2Update = new LingshanAgentServiceRecordEntity();
e2Update.setId(id);
// 办结,设置处理状态,办结描述,办结时间
e2Update.setProcessStatus(closeStatusEnum.getStatusCode());
e2Update.setCloseDesc(processDesc);
e2Update.setCloseTime(now);
agentServiceRecordDao.updateById(e2Update);
} catch (Exception e) {
log.error("【待办服务】办结:分布式锁错误:" + ExceptionUtils.getErrorStackTrace(e));
throw e;
} finally {
// 释放锁
if (lock.isHeldByCurrentThread()) {
lock.unlock();
}
}
}
/**
* @description: 状态变更校验
* @param oldStatus: 旧状态
* @param newStatus: 新状态
* @return
* @author: WangXianZhang
* @date: 2023/5/9 1:57 PM
*/
private void statusChangeCheck(Integer oldStatus, Integer newStatus) {
if (newStatus.intValue() == LingShanAgentServiceProcessStatusEnum.WITHDRAW.getStatusCode()
&& oldStatus.intValue() != LingShanAgentServiceProcessStatusEnum.WAIT_ACCEPT.getStatusCode()) {
// 只有待处理状态,才能撤回
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), null, String.format("【代办服务】当前状态为'%s',不允许撤回", LingShanAgentServiceProcessStatusEnum.getByStatus(oldStatus).getStatusName()));
}
if ((newStatus.intValue() == LingShanAgentServiceProcessStatusEnum.ACCEPTED.getStatusCode()
|| newStatus.intValue() == LingShanAgentServiceProcessStatusEnum.REJECTED.getStatusCode())
&& oldStatus.intValue() != LingShanAgentServiceProcessStatusEnum.WAIT_ACCEPT.getStatusCode()) {
// 如果要接受,或者拒绝,那么当前状态必须为待处理
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), null, String.format("【代办服务】当前状态为'%s',不允许操作", LingShanAgentServiceProcessStatusEnum.getByStatus(oldStatus).getStatusName()));
}
if (newStatus.intValue() == LingShanAgentServiceProcessStatusEnum.CLOSED.getStatusCode()
&& oldStatus.intValue() != LingShanAgentServiceProcessStatusEnum.ACCEPTED.getStatusCode()) {
// 如果要关闭,那么当前状态必须为已受理
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), null, String.format("【代办服务】当前状态为'%s',不允许操作", LingShanAgentServiceProcessStatusEnum.getByStatus(oldStatus).getStatusName()));
}
}
@Override
public void resiWithDraw(String id) {
LingshanAgentServiceRecordEntity service;
if ((service = agentServiceRecordDao.selectById(id)) == null) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), null, "【代办服务】未找到指定的服务信息,ID:" + id);
}
RLock lock = distributedLock.getLock(AGENT_SERVICE_LOCK_PREFIX + id);
try {
// 状态检查
statusChangeCheck(service.getProcessStatus(), LingShanAgentServiceProcessStatusEnum.WITHDRAW.getStatusCode());
LingshanAgentServiceRecordEntity e2update = new LingshanAgentServiceRecordEntity();
e2update.setId(id);
e2update.setProcessStatus(LingShanAgentServiceProcessStatusEnum.WITHDRAW.getStatusCode());
e2update.setProcessTime(new Date());
agentServiceRecordDao.updateById(e2update);
} catch (Exception e) {
log.error("【待办服务】撤回:分布式锁错误:" + ExceptionUtils.getErrorStackTrace(e));
throw e;
} finally {
// 释放锁
if (lock.isHeldByCurrentThread()) {
lock.unlock();
}
}
}
@Override
public void resiEvaluate(String id, Integer satisfication) {
LingshanAgentServiceRecordEntity service;
if ((service = agentServiceRecordDao.selectById(id)) == null) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), null, "【代办服务】未找到指定的服务信息,ID:" + id);
}
if (! service.getProcessStatus().equals(LingShanAgentServiceProcessStatusEnum.CLOSED.getStatusCode())) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), null,
"【代办服务】只有办结的服务才能进行评价,当前状态为:" + LingShanAgentServiceProcessStatusEnum.getByStatus(service.getProcessStatus()).getStatusName());
}
LingshanAgentServiceRecordEntity e2update = new LingshanAgentServiceRecordEntity();
e2update.setId(id);
e2update.setSatisfication(satisfication);
agentServiceRecordDao.updateById(e2update);
}
@Override
public PageData<AgentServiceList4WorkPcResultDTO> workPcServiceList(String orgId, String orgType, String serviceCategory, String content,
String agentName, Date processTimeStart, Date processTimeEnd, Integer pageNo, Integer pageSize) {
String orgIdPath;
if (StringUtils.isBlank(orgId)) {
// 没传组织id,则默认使用当前人员所属的组织
orgIdPath = epmetUserRemoteService.getLoginUserDetails().getOrgIdPath();
} else {
if (StringUtils.isBlank(orgType)) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), null,
"【代办服务】缺少组织类型参数");
}
if (OrgInfoConstant.AGENCY.equals(orgType)) {
AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(orgId);
orgIdPath = PidUtils.convertPid2OrgIdPath(agencyInfo.getId(), agencyInfo.getPids());
} else if (OrgInfoConstant.GRID.equals(orgType)) {
GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(orgId);
orgIdPath = PidUtils.convertPid2OrgIdPath(gridInfo.getId(), gridInfo.getPids());
} else {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), null,
"【代办服务】未知的组织类型");
}
}
LambdaQueryWrapper<LingshanAgentServiceRecordEntity> q = new LambdaQueryWrapper<>();
q.likeRight(LingshanAgentServiceRecordEntity::getOrgIdPath, orgIdPath);
q.eq(StringUtils.isNotBlank(serviceCategory), LingshanAgentServiceRecordEntity::getServiceCategory, serviceCategory);
q.like(StringUtils.isNotBlank(content), LingshanAgentServiceRecordEntity::getContent, content);
q.like(StringUtils.isNotBlank(agentName), LingshanAgentServiceRecordEntity::getAgentName, agentName);
q.ge(processTimeStart != null , LingshanAgentServiceRecordEntity::getProcessTime, processTimeStart);
q.le(processTimeEnd != null , LingshanAgentServiceRecordEntity::getProcessTime, processTimeEnd);
Page<LingshanAgentServiceRecordEntity> pd = agentServiceRecordDao.selectPage(new Page<>(pageNo, pageSize), q);
List<AgentServiceList4WorkPcResultDTO> ds = pd.getRecords().stream().map(serviceEntity -> {
String categoryName = null;
LingshanAgentServiceCategoryEntity categoryEntity = agentServiceCategoryDao.selectById(serviceEntity.getServiceCategory());
if (categoryEntity != null) {
categoryName = categoryEntity.getCategoryName();
}
AgentServiceList4WorkPcResultDTO d = new AgentServiceList4WorkPcResultDTO();
d.setId(serviceEntity.getId());
d.setContent(serviceEntity.getContent());
d.setOrgNamePath(getOrgNamePath(serviceEntity.getGridId()));
d.setServiceCategory(serviceEntity.getServiceCategory());
d.setServiceCategoryName(categoryName);
d.setApplicantName(serviceEntity.getApplicantName());
d.setCreatedTime(serviceEntity.getCreatedTime());
d.setAgentName(serviceEntity.getAgentName());
d.setProcessStatus(serviceEntity.getProcessStatus());
d.setProcessStatusDisplay(LingShanAgentServiceProcessStatusEnum.getByStatus(serviceEntity.getProcessStatus()).getStatusName());
if (LingShanAgentServiceProcessStatusEnum.ACCEPTED.getStatusCode() == serviceEntity.getProcessStatus().intValue()
|| LingShanAgentServiceProcessStatusEnum.CLOSED.getStatusCode() == serviceEntity.getProcessStatus().intValue()) {
// 只有已受理和驳回才显示这个时间。
d.setProcessTime(serviceEntity.getProcessTime());
}
d.setSatisfaction(serviceEntity.getSatisfication());
// 反序列化附件列表
d.setAttachments(JSON.parseArray(serviceEntity.getAttachments(), String.class));
return d;
}).collect(Collectors.toList());
return new PageData<>(ds, pd.getTotal());
}
@Override
public void workPcDelete(String id) {
LingshanAgentServiceRecordEntity service;
if ((service = agentServiceRecordDao.selectById(id)) == null) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), null, "【代办服务】未找到指定的服务信息,ID:" + id);
}
agentServiceRecordDao.deleteById(id);
}
/**
* 通过gridid列表拼接处组织名称path例如开发者社区-Java第一网格开发者社区-Python第一网格
*/
private String getOrgNamePath(String gridId) {
GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(gridId);
if (gridInfo == null) {
return null;
}
AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(gridInfo.getPid());
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());
d.setLongitude(rec.getLongitude());
d.setLatitude(rec.getLatitude());
return d;
}).collect(Collectors.toList());
}
@Override
public List<ScreenAgentServiceCategoryAnalysisRstDTO> serviceCategoryAnalysis(String orgType, String orgId) {
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());
}
LambdaQueryWrapper<LingshanAgentServiceRecordEntity> q = new QueryWrapper<LingshanAgentServiceRecordEntity>().select(" service_category, count(*) qty ")
.lambda()
.likeRight(LingshanAgentServiceRecordEntity::getOrgIdPath, orgIdPath)
.groupBy(LingshanAgentServiceRecordEntity::getServiceCategory);
Map<String, LingshanAgentServiceRecordEntity> categoryAndData =
agentServiceRecordDao.selectList(q).stream().collect(Collectors.toMap(LingshanAgentServiceRecordEntity::getServiceCategory, Function.identity()));
LambdaQueryWrapper<LingshanAgentServiceCategoryEntity> cq = new LambdaQueryWrapper<>();
cq.eq(LingshanAgentServiceCategoryEntity::getCustomerId, EpmetRequestHolder.getLoginUserCustomerId());
List<LingshanAgentServiceCategoryEntity> cateogries = agentServiceCategoryDao.selectList(cq);
return cateogries.stream().map(c -> {
LingshanAgentServiceRecordEntity data = categoryAndData.get(c.getId());
return new ScreenAgentServiceCategoryAnalysisRstDTO(c.getCategoryName(), data.getQty());
}).collect(Collectors.toList());
}
@Override
public List<AgentServiceTrendAnalysisRstDTO> serviceTrendAnalysis(String orgType, String orgId) {
// 计算得到时间列表
Map<String, Date[]> dateCatelogue = generateTimeCatelogue();
// 为了能使用索引,只能循环查询每个时间段的了,否则就要加一列日期,就这样吧
return dateCatelogue.entrySet().stream().map(entry -> {
String monthName = entry.getKey();
Date timeStart = entry.getValue()[0];
Date timeEnd = entry.getValue()[1];
// 1.受理数
// 受理数,使用processTime计算,processTime可用于表示受理时间和驳回时间。要查询受理数,要查询状态为已受理和已结案两种状态,使用processTime+processStatus结合查询
LambdaQueryWrapper<LingshanAgentServiceRecordEntity> rq = new LambdaQueryWrapper<>();
rq.ge(LingshanAgentServiceRecordEntity::getProcessTime, timeStart);
rq.le(LingshanAgentServiceRecordEntity::getProcessTime, timeEnd);
rq.in(LingshanAgentServiceRecordEntity::getProcessStatus,
LingShanAgentServiceProcessStatusEnum.ACCEPTED.getStatusCode(), LingShanAgentServiceProcessStatusEnum.CLOSED.getStatusCode());
Integer acceptCount = agentServiceRecordDao.selectCount(rq);
// 2.办结率 todo
// 3.组合数据
ArrayList<AgentServiceTrendAnalysisRstDTO.DataObj> dataList = new ArrayList<>();
dataList.add(new AgentServiceTrendAnalysisRstDTO.DataObj("受理数", acceptCount));
dataList.add(new AgentServiceTrendAnalysisRstDTO.DataObj("办结率", 0));
AgentServiceTrendAnalysisRstDTO rd = new AgentServiceTrendAnalysisRstDTO(monthName, dataList);
return rd;
}).collect(Collectors.toList());
}
/**
* @Description: 计算时间目录
* @param :
* @Return java.util.Map<java.lang.String,java.lang.String[]>
* @Author: wangxianzhang
* @Date: 2023/5/16 1:53 PM
*/
public Map<String, Date[]> generateTimeCatelogue() {
Date startDate = DateUtils.addDateMonths(new Date(), -11);
HashMap<String, Date[]> rm = new LinkedHashMap<>();
for (int c = 1; c <= 12; c++) {
Date monthStart = DateUtils.getMonthStart(startDate);
Date monthEnd = DateUtils.getMonthEnd(startDate);
rm.put(DateUtils.format(startDate, "MM") + "月", new Date[]{monthStart, monthEnd});
startDate = DateUtils.addDateMonths(startDate, 1);
}
return rm;
}
}

207
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/LingshanOfficeHallServiceRecordServiceImpl.java

@ -0,0 +1,207 @@
package com.epmet.service.impl;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.enums.DictTypeEnum;
import com.epmet.commons.tools.enums.OrgTypeEnum;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.common.CustomerOrgRedis;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache;
import com.epmet.commons.tools.redis.common.bean.GridInfoCache;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.EpmetRequestHolder;
import com.epmet.commons.tools.utils.PidUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dao.LingshanOfficeHallServiceRecordDao;
import com.epmet.dto.LingshanOfficeHallServiceRecordDTO;
import com.epmet.dto.form.lingshan.LingshanOfficeHallServiceRecordPageFormDTO;
import com.epmet.entity.LingshanOfficeHallServiceRecordEntity;
import com.epmet.feign.EpmetAdminOpenFeignClient;
import com.epmet.service.LingshanOfficeHallServiceRecordService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
/**
* 灵山_办事大厅服务记录
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2023-05-15
*/
@Service
public class LingshanOfficeHallServiceRecordServiceImpl extends BaseServiceImpl<LingshanOfficeHallServiceRecordDao, LingshanOfficeHallServiceRecordEntity> implements LingshanOfficeHallServiceRecordService {
@Autowired
private EpmetAdminOpenFeignClient adminOpenFeignClient;
/**
* 办事大厅-分页列表
*
* @param formDTO
* @return
*/
@Override
public PageData<LingshanOfficeHallServiceRecordDTO> page(LingshanOfficeHallServiceRecordPageFormDTO formDTO) {
if (StringUtils.isBlank(formDTO.getOrgId()) && StringUtils.isBlank(formDTO.getOrgType())) {
formDTO.setOrgId(CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getStaffId()).getAgencyId());
formDTO.setOrgType(OrgTypeEnum.AGENCY.getCode());
}
String orgIdPath = queryOrgIdPath(formDTO.getCustomerId(), formDTO.getStaffId(), formDTO.getOrgId(), formDTO.getOrgType());
PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize());
List<LingshanOfficeHallServiceRecordDTO> resultList = baseDao.pageList(formDTO.getCustomerId(), orgIdPath,
formDTO.getCategoryCode(), formDTO.getContent(),
formDTO.getSatisfication(),
formDTO.getApplicantStartDate(), formDTO.getApplicantEndDate(),
formDTO.getCloseStartDate(), formDTO.getCloseEndDate(),
formDTO.getStatus());
if (CollectionUtils.isNotEmpty(resultList)) {
Result<Map<String, String>> categoryRes = adminOpenFeignClient.dictMap(DictTypeEnum.LINGSHAN_OFFICE_HALL_SERVICE_RECORD.getCode());
resultList.forEach(dto -> {
dto.setCategoryName(MapUtils.isNotEmpty(categoryRes.getData()) ? categoryRes.getData().get(dto.getCategoryCode()) : StrConstant.EPMETY_STR);
});
}
PageInfo pageInfo = new PageInfo<>(resultList);
return new PageData<>(resultList, pageInfo.getTotal(),formDTO.getPageSize());
}
/**
* 办事大厅-查看详情
*
* @param id
* @return
*/
@Override
public LingshanOfficeHallServiceRecordDTO get(String id) {
LingshanOfficeHallServiceRecordEntity entity = baseDao.selectById(id);
if (null == entity) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"办事大厅服务记录不存在","服务记录不存在");
}
LingshanOfficeHallServiceRecordDTO resultDto=ConvertUtils.sourceToTarget(entity, LingshanOfficeHallServiceRecordDTO.class);
Result<Map<String, String>> categoryRes = adminOpenFeignClient.dictMap(DictTypeEnum.LINGSHAN_OFFICE_HALL_SERVICE_RECORD.getCode());
resultDto.setCategoryName(MapUtils.isNotEmpty(categoryRes.getData()) ? categoryRes.getData().get(resultDto.getCategoryCode()) : StrConstant.EPMETY_STR);
//未办结:0;已办结:1
if(NumConstant.ZERO_STR.equals(resultDto.getStatus())){
resultDto.setStatusName("未办结");
}else if(NumConstant.ONE_STR.equals(resultDto.getStatus())){
resultDto.setStatusName("已办结");
}
if(null!=resultDto.getSatisfication()){
// 满意度评价。-1不满意,0基本满意,1非常满意
switch(resultDto.getSatisfication())
{
case -1:
resultDto.setSatisficationName("不满意");
break;
case 0:
resultDto.setSatisficationName("基本满意");
break;
case 1:
resultDto.setSatisficationName("非常满意");
break;
default:
resultDto.setSatisficationName(StrConstant.EPMETY_STR);
break;
}
}
return resultDto;
}
@Override
@Transactional(rollbackFor = Exception.class)
public String save(LingshanOfficeHallServiceRecordDTO dto) {
LingshanOfficeHallServiceRecordEntity entity = ConvertUtils.sourceToTarget(dto, LingshanOfficeHallServiceRecordEntity.class);
entity.setStatus(NumConstant.ZERO_STR);
if (StringUtils.isNotBlank(dto.getApplicantOrgId())) {
if (OrgTypeEnum.GRID.getCode().equals(dto.getApplicantOrgType())) {
GridInfoCache gridInfoCache = CustomerOrgRedis.getGridInfo(dto.getApplicantOrgId());
entity.setApplicantOrgIdPath(PidUtils.convertPid2OrgIdPath(gridInfoCache.getId(), gridInfoCache.getPids()));
entity.setApplicantOrgName(gridInfoCache.getGridNamePath());
// 本条数据属于网格
entity.setOrgId(gridInfoCache.getId());
entity.setOrgType(dto.getApplicantOrgType());
entity.setOrgIdPath(entity.getApplicantOrgIdPath());
} else if (OrgTypeEnum.AGENCY.getCode().equals(dto.getApplicantOrgType())) {
AgencyInfoCache agencyInfoCache = CustomerOrgRedis.getAgencyInfo(dto.getApplicantOrgId());
entity.setApplicantOrgIdPath(PidUtils.convertPid2OrgIdPath(agencyInfoCache.getId(), agencyInfoCache.getPids()));
entity.setApplicantOrgName(agencyInfoCache.getOrganizationName());
// 本条数据属于组织
entity.setOrgId(agencyInfoCache.getId());
entity.setOrgType(dto.getApplicantOrgType());
entity.setOrgIdPath(entity.getApplicantOrgIdPath());
}
} else {
// 如果申请人所属组织没填写, 本条数据属于当前工作人员所属组织
entity.setOrgId(CustomerStaffRedis.getStaffInfo(dto.getCustomerId(), EpmetRequestHolder.getLoginUserId()).getAgencyId());
entity.setOrgType(OrgTypeEnum.AGENCY.getCode());
entity.setOrgIdPath(CustomerOrgRedis.getOrgIdPath(entity.getOrgId(), entity.getOrgType()));
}
insert(entity);
return entity.getId();
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(LingshanOfficeHallServiceRecordDTO dto) {
LingshanOfficeHallServiceRecordEntity entity = ConvertUtils.sourceToTarget(dto, LingshanOfficeHallServiceRecordEntity.class);
if (StringUtils.isNotBlank(dto.getApplicantOrgId())) {
if (OrgTypeEnum.GRID.getCode().equals(dto.getApplicantOrgType())) {
GridInfoCache gridInfoCache = CustomerOrgRedis.getGridInfo(dto.getApplicantOrgId());
entity.setApplicantOrgIdPath(PidUtils.convertPid2OrgIdPath(gridInfoCache.getId(), gridInfoCache.getPids()));
entity.setApplicantOrgName(gridInfoCache.getGridNamePath());
// 本条数据属于网格
entity.setOrgId(gridInfoCache.getId());
entity.setOrgType(dto.getApplicantOrgType());
entity.setOrgIdPath(entity.getApplicantOrgIdPath());
} else if (OrgTypeEnum.AGENCY.getCode().equals(dto.getApplicantOrgType())) {
AgencyInfoCache agencyInfoCache = CustomerOrgRedis.getAgencyInfo(dto.getApplicantOrgId());
entity.setApplicantOrgIdPath(PidUtils.convertPid2OrgIdPath(agencyInfoCache.getId(), agencyInfoCache.getPids()));
entity.setApplicantOrgName(agencyInfoCache.getOrganizationName());
// 本条数据属于组织
entity.setOrgId(agencyInfoCache.getId());
entity.setOrgType(dto.getApplicantOrgType());
entity.setOrgIdPath(entity.getApplicantOrgIdPath());
}
} else {
// 如果申请人所属组织没填写, 本条数据属于当前工作人员所属组织
entity.setOrgId(CustomerStaffRedis.getStaffInfo(dto.getCustomerId(), EpmetRequestHolder.getLoginUserId()).getAgencyId());
entity.setOrgType(OrgTypeEnum.AGENCY.getCode());
entity.setOrgIdPath(CustomerOrgRedis.getOrgIdPath(entity.getOrgId(), entity.getOrgType()));
}
updateById(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(List<String> ids) {
// 逻辑删除(@TableLogic 注解)
baseDao.deleteBatchIds(ids);
}
private String queryOrgIdPath(String customerId, String staffId, String orgId, String orgType) {
String orgIdPath = "";
// 如果没传,默认查询当前工作人员所属组织
if (StringUtils.isBlank(orgId) && StringUtils.isBlank(orgType)) {
CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(customerId, staffId);
orgId = staffInfoCacheResult.getAgencyId();
orgType = OrgTypeEnum.AGENCY.getCode();
}
orgIdPath = CustomerOrgRedis.getOrgIdPath(orgId, orgType);
return orgIdPath;
}
}

21
epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/LingshanAgentServiceCategoryDao.xml

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.epmet.dao.LingshanAgentServiceCategoryDao">
<resultMap type="com.epmet.entity.LingshanAgentServiceCategoryEntity" id="lingshanAgentServiceCategoryMap">
<result property="id" column="ID"/>
<result property="customerId" column="CUSTOMER_ID"/>
<result property="categoryName" column="CATEGORY_NAME"/>
<result property="description" column="DESCRIPTION"/>
<result property="iconUrl" column="ICON_URL"/>
<result property="revision" column="REVISION"/>
<result property="delFlag" column="DEL_FLAG"/>
<result property="createdBy" column="CREATED_BY"/>
<result property="createdTime" column="CREATED_TIME"/>
<result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
</mapper>

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

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.epmet.dao.LingshanAgentServiceRecordDao">
<resultMap type="com.epmet.entity.LingshanAgentServiceRecordEntity" id="lingshanAgentServiceRecordMap">
<result property="id" column="ID"/>
<result property="customerId" column="CUSTOMER_ID"/>
<result property="applicantId" column="APPLICANT_ID"/>
<result property="applicantName" column="APPLICANT_NAME"/>
<result property="agentId" column="AGENT_ID"/>
<result property="agentName" column="AGENT_NAME"/>
<result property="gridId" column="GRID_ID"/>
<result property="orgIdPath" column="ORG_ID_PATH"/>
<result property="serviceCategory" column="SERVICE_CATEGORY"/>
<result property="exceptServeTime" column="EXCEPT_SERVE_TIME"/>
<result property="exceptServeAddress" column="EXCEPT_SERVE_ADDRESS"/>
<result property="attachments" column="ATTACHMENTS"/>
<result property="processTime" column="PROCESS_TIME"/>
<result property="processDesc" column="PROCESS_DESC"/>
<result property="processStatus" column="PROCESS_STATUS"/>
<result property="processAttachments" column="PROCESS_ATTACHMENTS"/>
<result property="closeDesc" column="CLOSE_DESC"/>
<result property="closeTime" column="CLOSE_TIME"/>
<result property="contactName" column="CONTACT_NAME"/>
<result property="contactMobile" column="CONTACT_MOBILE"/>
<result property="content" column="CONTENT"/>
<result property="satisfication" column="SATISFICATION"/>
<result property="revision" column="REVISION"/>
<result property="delFlag" column="DEL_FLAG"/>
<result property="createdBy" column="CREATED_BY"/>
<result property="createdTime" column="CREATED_TIME"/>
<result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/>
<result property="longitude" column="LONGITUDE"/>
<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>

48
epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/LingshanOfficeHallServiceRecordDao.xml

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.epmet.dao.LingshanOfficeHallServiceRecordDao">
<select id="pageList" parameterType="map" resultType="com.epmet.dto.LingshanOfficeHallServiceRecordDTO">
select r.*,
(case when r.STATUS='0' then '未办结'
when r.STATUS='1' then '已办结'
else ''
end)as statusName,
(
case when r.SATISFICATION='-1' then '不满意'
when r.SATISFICATION='0' then '基本满意'
when r.SATISFICATION='1' then '非常满意'
else ''
end)as satisficationName
from lingshan_office_hall_service_record r
where r.DEL_FLAG = '0'
and r.CUSTOMER_ID = #{customerId}
and r.ORG_ID_PATH like concat(#{orgIdPath},'%')
<if test="categoryCode != null and categoryCode != ''">
and r.CATEGORY_CODE = #{categoryCode}
</if>
<if test="content != null and content != ''">
and r.CONTENT like concat('%',#{content},'%')
</if>
<if test="satisfication != null">
and r.SATISFICATION = #{satisfication}
</if>
<if test="status != null and status != ''">
and r.STATUS = #{status}
</if>
<if test='applicantStartDate != null and applicantStartDate != "" '>
AND DATE_FORMAT(r.APPLICANT_TIME,'%Y-%m-%d') >= #{applicantStartDate}
</if>
<if test='applicantEndDate != null and applicantEndDate != "" '>
AND DATE_FORMAT(r.APPLICANT_TIME,'%Y-%m-%d') <![CDATA[ <= ]]> #{applicantEndDate}
</if>
<if test='closeStartDate != null and closeStartDate != "" '>
AND DATE_FORMAT(r.CLOSE_TIME,'%Y-%m-%d') >= #{closeStartDate}
</if>
<if test='closeEndDate != null and closeEndDate != "" '>
AND DATE_FORMAT(r.CLOSE_TIME,'%Y-%m-%d') <![CDATA[ <= ]]> #{closeEndDate}
</if>
ORDER BY R.CREATED_TIME DESC
</select>
</mapper>

3
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcHouseDTO.java

@ -170,4 +170,7 @@ public class IcHouseDTO implements Serializable {
* 加密后的房主身份证
*/
private String showOwnerIdCard;
private String longitude;
private String latitude;
}

7
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddStaffV2FromDTO.java

@ -78,4 +78,11 @@ public class AddStaffV2FromDTO implements Serializable {
* 烟台用当前登录用户
*/
private String currentUserId;
/**
* 文化程度0小学及文盲,1初中,2高中,3大专,4本科,5硕士,6博士,7中专
*/
private String culture;
private String idCard;
}

3
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcHouseAddFormDTO.java

@ -113,4 +113,7 @@ public class IcHouseAddFormDTO implements Serializable {
*/
private String coding;
private String longitude;
private String latitude;
}

13
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/StaffSubmitFromDTO.java

@ -8,6 +8,7 @@ import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
@ -74,4 +75,16 @@ public class StaffSubmitFromDTO implements Serializable {
* 社会自组织: community_org
*/
private String deptType;
private String idCard;
/**
* 文化程度0小学及文盲,1初中,2高中,3大专,4本科,5硕士,6博士,7中专
*/
private String culture;
// /**
// * 出生日期
// */
// private Date birthday;
}

15
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/lingshan/DangerousChemicalsDistributionFormDTO.java

@ -0,0 +1,15 @@
package com.epmet.dto.form.lingshan;
import com.epmet.commons.tools.dto.form.OrgCommonFormDTO;
import lombok.Data;
/**
* @Description 灵山大屏-安全生产-生产企业类型统计点击饼图中间地图显示列表
* @Author yzm
* @Date 2023/5/15 14:59
*/
@Data
public class DangerousChemicalsDistributionFormDTO extends OrgCommonFormDTO {
private String typeCode;
}

23
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/LingShanPartyServiceCenterQtyRstDTO.java

@ -0,0 +1,23 @@
package com.epmet.dto.result;
import lombok.Data;
@Data
public class LingShanPartyServiceCenterQtyRstDTO {
/**
* 名称
*/
// private String orgId;
/**
* 组织类型
*/
private String orgType;
/**
* 数量
*/
private Integer qty;
}

12
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/LingShanScreenPartyObjectByTypeRstDTO.java

@ -0,0 +1,12 @@
package com.epmet.dto.result;
import lombok.Data;
@Data
public class LingShanScreenPartyObjectByTypeRstDTO {
private String orgName;
private String longitude;
private String latitude;
}

8
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/StaffInitResultDTO.java

@ -1,8 +1,10 @@
package com.epmet.dto.result;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
@ -55,4 +57,10 @@ public class StaffInitResultDTO implements Serializable {
* xxx-xxx
*/
private String agencyName;
private String culture;
private String cultureDisplay;
@JsonFormat(pattern = "yyyy-MM-dd")
private Date birthday;
}

56
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/lingshan/DangerousChemicalsTypeStatDetailDTO.java

@ -0,0 +1,56 @@
package com.epmet.dto.result.lingshan;
/**
* @Description 灵山大屏-安全生产-生产企业类型统计 点击饼图列表及详情返参DTO
* @Author yzm
* @Date 2023/5/15 15:00
*/
import lombok.Data;
@Data
public class DangerousChemicalsTypeStatDetailDTO {
/**
* 企业id
*/
private String id;
/**
* 企业名称
*/
private String name;
/**
* 企业介绍
*/
private String content;
private String longitude;
private String latitude;
private String addr;
/**
* 联系人
*/
private String annt;
/**
* 联系电话
*/
private String phone;
// @JsonIgnore
private String category;
/**
* 类别名称
*/
private String type;
/**
* 是否重点企业
*/
private Boolean zd;
/**
* 包企领导
*/
private String leader;
/**
* 包企干部
*/
private String cadre;
}

17
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/lingshan/DangerousChemicalsTypeStatResultDTO.java

@ -0,0 +1,17 @@
package com.epmet.dto.result.lingshan;
import lombok.Data;
/**
* @Description 灵山大屏-安全生产-生产企业类型统计
* @Author yzm
* @Date 2023/5/15 13:48
*/
@Data
public class DangerousChemicalsTypeStatResultDTO {
private String name;
private Integer value;
private String typeCode;
}

25
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/GovOrgOpenFeignClient.java

@ -757,4 +757,29 @@ public interface GovOrgOpenFeignClient {
@PostMapping("/gov/org/enterprise/sendEnterprisePatrolRemindMessage")
Result sendEnterprisePatrolRemindMessage();
/**
* @Description: 灵山:根据行政组织id查询组织下的党群服务中心/站的列表
* @param orgId: 组织id
* @param orgType: agency,grid
* @Return com.epmet.commons.tools.utils.Result<com.epmet.dto.result.LingShanPartyServiceCenterQtyRstDTO>
* @Author: wangxianzhang
* @Date: 2023/5/12 9:23 AM
*/
@GetMapping("/gov/org/icpartyservicecenter/lingshan/partyServiceCenterQtyStats")
Result<List<LingShanPartyServiceCenterQtyRstDTO>> partyServiceCenterQtyStats(@RequestParam(value = "orgId", required = false) String orgId,
@RequestParam(value = "orgType", required = false) String orgType);
/**
* @Description: 灵山党群服务中心站列表查询
* @param objType:
* @param orgId:
* @Return com.epmet.commons.tools.utils.Result
* @Author: wangxianzhang
* @Date: 2023/5/12 2:14 PM
*/
@GetMapping("/gov/org/icpartyservicecenter/lingshan/partyServiceCenterList")
Result<List<LingShanScreenPartyObjectByTypeRstDTO>> lingshanPartyServiceCenterList(
@RequestParam(value = "objType", required = false) String objType,
@RequestParam(value = "orgId", required = false) String orgId);
}

9
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/fallback/GovOrgOpenFeignClientFallback.java

@ -474,4 +474,13 @@ public class GovOrgOpenFeignClientFallback implements GovOrgOpenFeignClient {
return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "gridStaffList", dto);
}
@Override
public Result<List<LingShanPartyServiceCenterQtyRstDTO>> partyServiceCenterQtyStats(String orgId, String orgType) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "partyServiceCenterQtyStats", orgId, orgType);
}
@Override
public Result<List<LingShanScreenPartyObjectByTypeRstDTO>> lingshanPartyServiceCenterList(String objType, String orgId) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "lingshanPartyServiceCenterList", objType, orgId);
}
}

31
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcDangerousChemicalsController.java

@ -10,6 +10,7 @@ import com.alibaba.fastjson.JSON;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.aop.NoRepeatSubmit;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.dto.form.OrgCommonFormDTO;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.ExceptionUtils;
@ -23,8 +24,11 @@ import com.epmet.dto.IcDangerousChemicalsDTO;
import com.epmet.dto.form.IcDangerousChemicalsAddEditFormDTO;
import com.epmet.dto.form.IcDangerousChemicalsListFormDTO;
import com.epmet.dto.form.ImportTaskCommonFormDTO;
import com.epmet.dto.form.lingshan.DangerousChemicalsDistributionFormDTO;
import com.epmet.dto.result.IcDangerousChemicalsListResultDTO;
import com.epmet.dto.result.ImportTaskCommonResultDTO;
import com.epmet.dto.result.lingshan.DangerousChemicalsTypeStatDetailDTO;
import com.epmet.dto.result.lingshan.DangerousChemicalsTypeStatResultDTO;
import com.epmet.excel.IcDangerousChemicalsExcel;
import com.epmet.feign.EpmetCommonServiceOpenFeignClient;
import com.epmet.service.IcDangerousChemicalsService;
@ -288,5 +292,32 @@ public class IcDangerousChemicalsController {
return new Result();
}
/**
* 灵山大屏-安全生产-生产企业类型统计
*
* @param formDto
* @return
*/
@PostMapping("type-stat")
public Result<List<DangerousChemicalsTypeStatResultDTO>> typeStat(@LoginUser TokenDto tokenDto, @RequestBody OrgCommonFormDTO formDto) {
return new Result<List<DangerousChemicalsTypeStatResultDTO>>().ok(icDangerousChemicalsService.typeStat(tokenDto.getCustomerId(),
tokenDto.getUserId(),
formDto.getOrgId(),
formDto.getOrgType()));
}
/**
* 灵山大屏-安全生产-生产企业类型统计,点击饼图查询列表及详情
* @param tokenDto
* @param formDTO
* @return
*/
@PostMapping("distribution")
public Result<List<DangerousChemicalsTypeStatDetailDTO>> distribution(@LoginUser TokenDto tokenDto, @RequestBody DangerousChemicalsDistributionFormDTO formDTO) {
return new Result<List<DangerousChemicalsTypeStatDetailDTO>>().ok(icDangerousChemicalsService.distribution(tokenDto.getCustomerId(),
tokenDto.getUserId(),
formDTO.getOrgId(),
formDTO.getOrgType(),
formDTO.getTypeCode()));
}
}

38
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcPartyServiceCenterController.java

@ -30,10 +30,7 @@ import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.dto.IcPartyServiceCenterDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.AllMattersResultDTO;
import com.epmet.dto.result.AppointmentRecordResultDTO;
import com.epmet.dto.result.AppointmentTimeResultDTO;
import com.epmet.dto.result.PartyServiceCenterListResultDTO;
import com.epmet.dto.result.*;
import com.epmet.excel.IcPartyServiceCenterExcel;
import com.epmet.service.IcPartyServiceCenterService;
import org.springframework.beans.factory.annotation.Autowired;
@ -249,4 +246,37 @@ public class IcPartyServiceCenterController {
return new Result<PartyServiceCenterListResultDTO>().ok(icPartyServiceCenterService.partyServiceCenterDetail(formDTO));
}
/**
* @Description: 根据行政组织id查询
* @param orgId: 组织id
* @param orgType: agency,grid
* @Return com.epmet.commons.tools.utils.Result<com.epmet.dto.result.LingShanPartyServiceCenterQtyRstDTO>
* @Author: wangxianzhang
* @Date: 2023/5/12 9:23 AM
*/
@GetMapping("/lingshan/partyServiceCenterQtyStats")
public Result<List<LingShanPartyServiceCenterQtyRstDTO>> partyServiceCenterQtyStats(@RequestParam(value = "orgId", required = false) String orgId,
@RequestParam(value = "orgType", required = false) String orgType) {
List<LingShanPartyServiceCenterQtyRstDTO> l = icPartyServiceCenterService.partyServiceCenterQtyStats(orgId, orgType);
return new Result<List<LingShanPartyServiceCenterQtyRstDTO>>().ok(l);
}
/**
* @Description: 灵山党群服务中心站列表查询
* @param objType:
* @param orgId:
* @Return com.epmet.commons.tools.utils.Result
* @Author: wangxianzhang
* @Date: 2023/5/12 2:14 PM
*/
@GetMapping("/lingshan/partyServiceCenterList")
public Result<List<LingShanPartyUnitRstDTO>> partyServiceCenterList(
@RequestParam(value = "objType", required = false) String objType,
@RequestParam(value = "orgId", required = false) String orgId) {
List<LingShanPartyUnitRstDTO> l = icPartyServiceCenterService.lingshanPartyServiceCenterList(objType, orgId);
return new Result<List<LingShanPartyUnitRstDTO>>().ok(l);
}
}

11
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcDangerousChemicalsDao.java

@ -3,6 +3,7 @@ package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.form.IcDangerousChemicalsListFormDTO;
import com.epmet.dto.result.IcDangerousChemicalsListResultDTO;
import com.epmet.dto.result.lingshan.DangerousChemicalsTypeStatDetailDTO;
import com.epmet.entity.IcDangerousChemicalsEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -24,4 +25,14 @@ public interface IcDangerousChemicalsDao extends BaseDao<IcDangerousChemicalsEnt
void importInsert(@Param("entityList") List<IcDangerousChemicalsEntity> entityList);
/**
* 灵山大屏-安全生产-生产企业类型统计,点击饼图查询列表及详情
* @param customerId
* @param orgIdPath
* @param typeCode
* @return
*/
List<DangerousChemicalsTypeStatDetailDTO> selectDistributionList(@Param("customerId") String customerId,
@Param("orgIdPath") String orgIdPath,
@Param("typeCode") String typeCode);
}

3
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcHouseEntity.java

@ -136,4 +136,7 @@ public class IcHouseEntity extends BaseEpmetEntity {
* 房屋可编辑编码
*/
private String coding;
private String longitude;
private String latitude;
}

4
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcPartyServiceCenterEntity.java

@ -105,4 +105,8 @@ public class IcPartyServiceCenterEntity extends BaseEpmetEntity {
*/
private String address;
/**
* 某种组织类型的数量
*/
private transient int qtyOfType;
}

21
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcDangerousChemicalsService.java

@ -7,6 +7,8 @@ import com.epmet.dto.IcDangerousChemicalsDTO;
import com.epmet.dto.form.IcDangerousChemicalsAddEditFormDTO;
import com.epmet.dto.form.IcDangerousChemicalsListFormDTO;
import com.epmet.dto.result.IcDangerousChemicalsListResultDTO;
import com.epmet.dto.result.lingshan.DangerousChemicalsTypeStatDetailDTO;
import com.epmet.dto.result.lingshan.DangerousChemicalsTypeStatResultDTO;
import com.epmet.entity.IcDangerousChemicalsEntity;
import java.nio.file.Path;
@ -82,4 +84,23 @@ public interface IcDangerousChemicalsService extends BaseService<IcDangerousChem
void importInsert(List<IcDangerousChemicalsEntity> entityList);
IcDangerousChemicalsEntity get(String orgId, String name);
/**
* 灵山大屏-安全生产-生产企业类型统计
* @param orgId
* @param orgType
* @return
*/
List<DangerousChemicalsTypeStatResultDTO> typeStat(String customerId,String staffId,String orgId, String orgType);
/**
* 灵山大屏-安全生产-生产企业类型统计,点击饼图查询列表及详情
* @param customerId
* @param userId
* @param orgId
* @param orgType
* @param typeCode
* @return
*/
List<DangerousChemicalsTypeStatDetailDTO> distribution(String customerId, String staffId, String orgId, String orgType, String typeCode);
}

8
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcPartyServiceCenterService.java

@ -22,10 +22,7 @@ import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.dto.IcPartyServiceCenterDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.AllMattersResultDTO;
import com.epmet.dto.result.AppointmentRecordResultDTO;
import com.epmet.dto.result.AppointmentTimeResultDTO;
import com.epmet.dto.result.PartyServiceCenterListResultDTO;
import com.epmet.dto.result.*;
import com.epmet.entity.IcPartyServiceCenterEntity;
import java.util.List;
@ -192,4 +189,7 @@ public interface IcPartyServiceCenterService extends BaseService<IcPartyServiceC
*/
PartyServiceCenterListResultDTO partyServiceCenterDetail(PartyServiceCenterDetailFormDTO formDTO);
List<LingShanPartyServiceCenterQtyRstDTO> partyServiceCenterQtyStats(String orgId, String orgType);
List<LingShanPartyUnitRstDTO> lingshanPartyServiceCenterList(String objType, String orgId);
}

2
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java

@ -238,6 +238,8 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver {
}
IcHouseDTO icHouseDTO = ConvertUtils.sourceToTarget(formDTO, IcHouseDTO.class);
icHouseDTO.setId(formDTO.getHouseId());
icHouseDTO.setLatitude(formDTO.getLatitude());
icHouseDTO.setLongitude(formDTO.getLongitude());
icHouseDTO.setCustomerId(customerId);
icHouseDTO.setRentFlag(formDTO.getRentFlag());
icHouseDTO.setHouseTypeName(HouseTypeEnums.getTypeValue(formDTO.getHouseType()));

96
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcDangerousChemicalsServiceImpl.java

@ -28,6 +28,8 @@ import com.epmet.dto.form.ImportTaskCommonFormDTO;
import com.epmet.dto.result.IcCoverageCategoryDictListResultDTO;
import com.epmet.dto.result.IcDangerousChemicalsListResultDTO;
import com.epmet.dto.result.UploadImgResultDTO;
import com.epmet.dto.result.lingshan.DangerousChemicalsTypeStatDetailDTO;
import com.epmet.dto.result.lingshan.DangerousChemicalsTypeStatResultDTO;
import com.epmet.entity.IcDangerousChemicalsEntity;
import com.epmet.feign.EpmetAdminOpenFeignClient;
import com.epmet.feign.EpmetCommonServiceOpenFeignClient;
@ -59,10 +61,7 @@ import java.io.IOException;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -115,7 +114,7 @@ public class IcDangerousChemicalsServiceImpl extends BaseServiceImpl<IcDangerous
Result<Map<String, String>> statusRes = adminOpenFeignClient.dictMap(DictTypeEnum.IC_DANGER_TYPE.getCode());
Map<String, String> statusMap = statusRes.success() && MapUtils.isNotEmpty(statusRes.getData()) ? statusRes.getData() : new HashMap<>();
//企业类别字典数据
List<IcCoverageCategoryDictListResultDTO> dictList = coverageService.dictMap(formDTO.getCustomerId(), "dangerous_chemicals");
List<IcCoverageCategoryDictListResultDTO> dictList = coverageService.dictMap(formDTO.getCustomerId(), CoveragePlaceTypeEnum.DANGEROUS_CHEMICALS.getCode());
Map<String, String> dictMap = dictList.stream().collect(Collectors.toMap(IcCoverageCategoryDictListResultDTO::getValue, IcCoverageCategoryDictListResultDTO::getLabel));
for (IcDangerousChemicalsListResultDTO v : list) {
if (StringUtils.isNotBlank(v.getCategory())) {
@ -225,7 +224,7 @@ public class IcDangerousChemicalsServiceImpl extends BaseServiceImpl<IcDangerous
Result<Map<String, String>> statusRes = adminOpenFeignClient.dictMap(DictTypeEnum.IC_DANGER_TYPE.getCode());
Map<String, String> statusMap = statusRes.success() && MapUtils.isNotEmpty(statusRes.getData()) ? statusRes.getData() : new HashMap<>();
//企业类别字典数据
List<IcCoverageCategoryDictListResultDTO> dictList = coverageService.dictMap(formDTO.getCustomerId(), "city_management");
List<IcCoverageCategoryDictListResultDTO> dictList = coverageService.dictMap(formDTO.getCustomerId(), CoveragePlaceTypeEnum.DANGEROUS_CHEMICALS.getCode());
Map<String, String> dictMap = dictList.stream().collect(Collectors.toMap(IcCoverageCategoryDictListResultDTO::getValue, IcCoverageCategoryDictListResultDTO::getLabel));
if (StringUtils.isNotBlank(resultDTO.getCategory())) {
resultDTO.setCategoryName(dictMap.get(resultDTO.getCategory()));
@ -355,4 +354,89 @@ public class IcDangerousChemicalsServiceImpl extends BaseServiceImpl<IcDangerous
queryWrapper.eq(IcDangerousChemicalsEntity::getOrgId,orgId).eq(IcDangerousChemicalsEntity::getName,name);
return baseDao.selectOne(queryWrapper);
}
/**
* 灵山大屏-安全生产-生产企业类型统计
*
* @param orgId
* @param orgType
* @return
*/
@Override
public List<DangerousChemicalsTypeStatResultDTO> typeStat(String customerId,String staffId,String orgId, String orgType) {
// 企业类别字典数据
List<IcCoverageCategoryDictListResultDTO> dictList = coverageService.dictMap(customerId, CoveragePlaceTypeEnum.DANGEROUS_CHEMICALS.getCode());
if (CollectionUtils.isEmpty(dictList)) {
return new ArrayList<>();
}
String orgIdPath = queryOrgIdPath(customerId,staffId,orgId, orgType);
if (StringUtils.isBlank(orgIdPath)) {
return new ArrayList<>();
}
List<DangerousChemicalsTypeStatResultDTO> resultList = new ArrayList<>();
for (IcCoverageCategoryDictListResultDTO dto : dictList) {
DangerousChemicalsTypeStatResultDTO resultDTO = new DangerousChemicalsTypeStatResultDTO();
resultDTO.setName(dto.getLabel());
LambdaQueryWrapper<IcDangerousChemicalsEntity> countWrapper = new LambdaQueryWrapper<>();
countWrapper.eq(IcDangerousChemicalsEntity::getCustomerId, customerId)
.likeRight(IcDangerousChemicalsEntity::getOrgIdPath, orgIdPath)
.eq(IcDangerousChemicalsEntity::getCategory, dto.getValue());
resultDTO.setValue(baseDao.selectCount(countWrapper));
resultDTO.setTypeCode(dto.getValue());
resultList.add(resultDTO);
}
return resultList;
}
private String queryOrgIdPath(String customerId,String staffId,String orgId, String orgType) {
String orgIdPath = "";
// 如果没传,默认查询当前工作人员所属组织
if (StringUtils.isBlank(orgId) && StringUtils.isBlank(orgType)) {
CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(customerId, staffId);
orgId = staffInfoCacheResult.getAgencyId();
orgType = OrgTypeEnum.AGENCY.getCode();
}
if (OrgTypeEnum.AGENCY.getCode().equals(orgType)) {
CustomerAgencyDTO customerAgencyDTO = SpringContextUtils.getBean(CustomerAgencyService.class).get(orgId);
orgIdPath = PidUtils.convertPid2OrgIdPath(customerAgencyDTO.getId(), customerAgencyDTO.getPids());
} else if (OrgTypeEnum.GRID.getCode().equals(orgType)) {
CustomerGridDTO customerGridDTO = SpringContextUtils.getBean(CustomerGridService.class).get(orgId);
orgIdPath = PidUtils.convertPid2OrgIdPath(customerGridDTO.getId(), customerGridDTO.getPids());
}
return orgIdPath;
}
/**
* 灵山大屏-安全生产-生产企业类型统计,点击饼图查询列表及详情
*
* @param customerId
* @param staffId
* @param orgId
* @param orgType
* @param typeCode
* @return
*/
@Override
public List<DangerousChemicalsTypeStatDetailDTO> distribution(String customerId, String staffId, String orgId, String orgType, String typeCode) {
// 企业类别字典数据
List<IcCoverageCategoryDictListResultDTO> dictList = coverageService.dictMap(customerId, CoveragePlaceTypeEnum.DANGEROUS_CHEMICALS.getCode());
if (CollectionUtils.isEmpty(dictList)) {
return new ArrayList<>();
}
Map<String, String> categoryDictMap = dictList.stream().collect(Collectors.toMap(IcCoverageCategoryDictListResultDTO::getValue, IcCoverageCategoryDictListResultDTO::getLabel));
String orgIdPath = queryOrgIdPath(customerId, staffId, orgId, orgType);
if (StringUtils.isBlank(orgIdPath)) {
return new ArrayList<>();
}
List<DangerousChemicalsTypeStatDetailDTO> list = baseDao.selectDistributionList(customerId, orgIdPath, typeCode);
list.forEach(l -> {
// 赋值企业分类名称
if (MapUtils.isNotEmpty(categoryDictMap) && categoryDictMap.containsKey(l.getCategory())) {
l.setType(categoryDictMap.get(l.getCategory()));
}
});
return list;
}
}

54
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcPartyServiceCenterServiceImpl.java

@ -36,6 +36,7 @@ import com.epmet.commons.tools.redis.common.bean.GridInfoCache;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.PidUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.PartyServiceCenterConstant;
import com.epmet.dao.IcMatterAppointmentRecordDao;
@ -83,6 +84,8 @@ public class IcPartyServiceCenterServiceImpl extends BaseServiceImpl<IcPartyServ
private IcMatterAppointmentRecordDao matterAppointmentRecordDao;
@Autowired
private EpmetUserOpenFeignClient userOpenFeignClient;
@Autowired
private IcPartyServiceCenterDao icPartyServiceCenterDao;
@Override
public PageData<IcPartyServiceCenterDTO> page(Map<String, Object> params) {
@ -748,4 +751,55 @@ public class IcPartyServiceCenterServiceImpl extends BaseServiceImpl<IcPartyServ
return simpleDateFormat.format(date);
}
@Override
public List<LingShanPartyServiceCenterQtyRstDTO> partyServiceCenterQtyStats(String orgId, String orgType) {
String orgIdPath;
if (PartyServiceCenterConstant.ORG_TYPE_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());
}
LambdaQueryWrapper<IcPartyServiceCenterEntity> q = new QueryWrapper<IcPartyServiceCenterEntity>().select(" org_type, count(*) qtyOfType")
.lambda()
.and(c1 -> c1.eq(IcPartyServiceCenterEntity::getOrgId, orgId).or(c2 -> c2.eq(IcPartyServiceCenterEntity::getPids, orgIdPath)))
.groupBy(IcPartyServiceCenterEntity::getOrgType);
List<IcPartyServiceCenterEntity> l = icPartyServiceCenterDao.selectList(q);
return l.stream().map(e -> {
LingShanPartyServiceCenterQtyRstDTO r = new LingShanPartyServiceCenterQtyRstDTO();
r.setQty(e.getQtyOfType());
r.setOrgType(e.getOrgType());
return r;
}).collect(Collectors.toList());
}
@Override
public List<LingShanPartyUnitRstDTO> lingshanPartyServiceCenterList(String objType, String orgId) {
LambdaQueryWrapper<IcPartyServiceCenterEntity> q = new LambdaQueryWrapper<>();;
if (objType.equals("party_service_center")) {
// 党群服务中心
q.eq(IcPartyServiceCenterEntity::getOrgId, orgId);
q.eq(IcPartyServiceCenterEntity::getOrgType, "agency");
} else {
// 党群服务站
q.eq(IcPartyServiceCenterEntity::getOrgId, orgId);
q.eq(IcPartyServiceCenterEntity::getOrgType, "grid");
}
List<IcPartyServiceCenterEntity> es = icPartyServiceCenterDao.selectList(q);
return es.stream().map(e -> {
LingShanPartyUnitRstDTO d = new LingShanPartyUnitRstDTO();
d.setLatitude(e.getLatitude());
d.setLongitude(e.getLongitude());
d.setOrgName(e.getCenterName());
return d;
}).collect(Collectors.toList());
}
}

28
epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcDangerousChemicalsDao.xml

@ -143,5 +143,31 @@
AND del_flag = '0'
</delete>
<!-- 灵山大屏-安全生产-生产企业类型统计,点击饼图,查询列表及详情 -->
<select id="selectDistributionList" parameterType="map" resultType="com.epmet.dto.result.lingshan.DangerousChemicalsTypeStatDetailDTO">
SELECT
c.id,
c.`NAME`,
c.COMPANY_PROFILE AS content,
c.LONGITUDE,
c.LATITUDE,
c.ADDRESS AS addr,
c.PRINCIPAL_NAME AS annt,
c.PRINCIPAL_MOBILE AS phone,
c.CATEGORY,
'' AS type,
c.SECURITY_FLAG AS zd,
c.BQ_LD AS leader,
c.BQ_GB AS cadre
FROM
ic_dangerous_chemicals c
WHERE
c.DEL_FLAG = '0'
AND c.CUSTOMER_ID = #{customerId}
and c.ORG_ID_PATH like concat(#{orgIdPath},'%')
<if test="typeCode != null and typeCode != '' ">
AND c.CATEGORY = #{typeCode}
</if>
order by c.CREATED_TIME desc
</select>
</mapper>

14
epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/CategoryDictServiceImpl.java

@ -25,6 +25,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 文章栏目表
@ -138,7 +139,18 @@ public class CategoryDictServiceImpl extends BaseServiceImpl<CategoryDictDao, Ca
@Transactional(rollbackFor = Exception.class)
public void delete(String[] ids) {
// 逻辑删除(@TableLogic 注解)
baseDao.deleteBatchIds(Arrays.asList(ids));
List<String> idList = Arrays.asList(ids);
List<Boolean> idList2Del = idList.stream().map(id -> {
CategoryDictEntity dict = baseDao.selectById(id);
if (dict == null || StringUtils.isBlank(dict.getPid().trim()) || "0".equals(dict.getPid())) {
// 一级分类的情况下,不执行删除。一级分类的id已经被固定到了菜单中,要删除了,就对应不起来了
return false;
}
return true;
}).collect(Collectors.toList());
baseDao.deleteBatchIds(idList2Del);
}
@Override

10
epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partyOrg/result/LingShanPartyMemQtyStatsInOrgRstDTO.java

@ -0,0 +1,10 @@
package com.epmet.resi.partymember.dto.partyOrg.result;
/**
* @Description 地图中的党员数量分布
* @Author wangxianzhang
* @Time 2023/5/12 3:25 PM
*/
public class LingShanPartyMemQtyStatsInOrgRstDTO {
private String name;
}

25
epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partyOrg/result/LingShanPartyOrgAndOtherObjQtyRstDTO.java

@ -0,0 +1,25 @@
package com.epmet.resi.partymember.dto.partyOrg.result;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class LingShanPartyOrgAndOtherObjQtyRstDTO {
/**
* 党建相关对象类型code
*/
private String partyObjectTypeCode;
/**
* 名称
*/
private String name;
/**
* 数量
*/
private Integer value;
}

19
epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partyOrg/result/LingShanScreenPartyObjectByTypeRstDTO.java

@ -0,0 +1,19 @@
package com.epmet.resi.partymember.dto.partyOrg.result;
import lombok.Data;
/**
* @Description 灵山街道按照党类型查询党相关对象
* @Author wangxianzhang
* @Time 2023/5/12 1:16 PM
*/
@Data
public class LingShanScreenPartyObjectByTypeRstDTO {
private String name;
private String longitude;
private String latitude;
private Integer partymemberQty;
}

30
epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/enums/LingShanPartyObjEnums.java

@ -0,0 +1,30 @@
package com.epmet.resi.partymember.enums;
/**
* @Description 灵山党建相关对象枚举
* @Author wangxianzhang
* @Time 2023/5/12 1:26 PM
*/
public enum LingShanPartyObjEnums {
DW("dw", "党委"),
BRANCH("branch", "支部"),
PARTY_SERVICE_CENTER("party_service_center", "党群服务中心"),
PARTY_SERVICE_STATION("party_service_station", "党群服务站"),
PARTY_UNIT("party_unit", "联建单位");
private String code;
private String name;
LingShanPartyObjEnums(String code, String name) {
this.code = code;
this.name = name;
}
public String getCode() {
return code;
}
public String getName() {
return name;
}
}

7
epmet-module/resi-partymember/resi-partymember-server/pom.xml

@ -12,6 +12,13 @@
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>com.epmet</groupId>
<artifactId>epmet-heart-client</artifactId>
<version>
2.0.0
</version>
</dependency>
<dependency>
<groupId>com.epmet</groupId>
<artifactId>resi-partymember-client</artifactId>

16
epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partyOrg/dao/IcPartyOrgDao.java

@ -5,10 +5,7 @@ import com.epmet.modules.partyOrg.entity.IcPartyOrgEntity;
import com.epmet.resi.partymember.dto.partyOrg.IcPartyOrgDTO;
import com.epmet.resi.partymember.dto.partyOrg.form.EditPrincipalFormDTO;
import com.epmet.resi.partymember.dto.partyOrg.form.PartyOrgTreeListDTO;
import com.epmet.resi.partymember.dto.partyOrg.result.ActAndScheduleListResultDTO;
import com.epmet.resi.partymember.dto.partyOrg.result.BranchlistTreeSubDTO;
import com.epmet.resi.partymember.dto.partyOrg.result.IcPartyOrgTreeDTO;
import com.epmet.resi.partymember.dto.partyOrg.result.PartyOrgListResultDTO;
import com.epmet.resi.partymember.dto.partyOrg.result.*;
import com.epmet.resi.partymember.dto.partymember.result.LingShanScreenPartyOrgCategoryResultDTO;
import com.epmet.resi.partymember.dto.partymember.result.LingShanScreenPartyOrgTreeResultDTO;
import org.apache.ibatis.annotations.Mapper;
@ -148,4 +145,15 @@ public interface IcPartyOrgDao extends BaseDao<IcPartyOrgEntity> {
List<LingShanScreenPartyOrgTreeResultDTO.PartyOrg> getPartyOrgsOfBranch(@Param("customerId") String customerId,
@Param("agencyId") String agencyId,
@Param("orgIdpath") String orgIdpath);
List<LingShanScreenPartyObjectByTypeRstDTO> lingshanListDw(@Param("orgIdPath") String orgIdPath);
/**
* @Description: 灵山直属支部
* @param orgId:
* @Return java.util.List<com.epmet.resi.partymember.dto.partyOrg.result.LingShanScreenPartyObjectByTypeRstDTO>
* @Author: wangxianzhang
* @Date: 2023/5/12 4:05 PM
*/
List<LingShanScreenPartyObjectByTypeRstDTO> lingshanListZsBranchs(@Param("orgId") String orgId);
}

5
epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partyOrg/entity/IcPartyOrgEntity.java

@ -93,4 +93,9 @@ public class IcPartyOrgEntity extends BaseEpmetEntity {
*/
private String introduction;
/**
* 子级数量
*/
private transient Integer childrenQty;
}

13
epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partyOrg/service/LingShanPartyOrgService.java

@ -0,0 +1,13 @@
package com.epmet.modules.partyOrg.service;
import com.epmet.commons.tools.utils.Result;
import com.epmet.resi.partymember.dto.partyOrg.result.LingShanPartyOrgAndOtherObjQtyRstDTO;
import com.epmet.resi.partymember.dto.partyOrg.result.LingShanScreenPartyObjectByTypeRstDTO;
import java.util.List;
public interface LingShanPartyOrgService {
List<LingShanPartyOrgAndOtherObjQtyRstDTO> partyOrgAndOtherObjectQtyStats(String agencyId);
List<LingShanScreenPartyObjectByTypeRstDTO> partyObjsByType(String objType, String orgId, String orgType);
}

189
epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partyOrg/service/impl/LingShanPartyOrgServiceImpl.java

@ -0,0 +1,189 @@
package com.epmet.modules.partyOrg.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.enums.OrgLevelEnum;
import com.epmet.commons.tools.enums.PartyOrgTypeEnum;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.feign.ResultDataResolver;
import com.epmet.commons.tools.redis.common.CustomerOrgRedis;
import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.PidUtils;
import com.epmet.constant.OrgInfoConstant;
import com.epmet.dto.result.LingShanPartyServiceCenterQtyRstDTO;
import com.epmet.dto.result.LingShanPartyUnitRstDTO;
import com.epmet.feign.EpmetHeartOpenFeignClient;
import com.epmet.feign.GovOrgOpenFeignClient;
import com.epmet.modules.partyOrg.dao.IcPartyOrgDao;
import com.epmet.modules.partyOrg.entity.IcPartyOrgEntity;
import com.epmet.modules.partyOrg.service.LingShanPartyOrgService;
import com.epmet.resi.partymember.dto.partyOrg.result.LingShanPartyOrgAndOtherObjQtyRstDTO;
import com.epmet.resi.partymember.dto.partyOrg.result.LingShanScreenPartyObjectByTypeRstDTO;
import com.epmet.resi.partymember.enums.LingShanPartyObjEnums;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
@Service
public class LingShanPartyOrgServiceImpl implements LingShanPartyOrgService, ResultDataResolver {
@Autowired
private IcPartyOrgDao partyOrgDao;
@Autowired
private GovOrgOpenFeignClient govOrgOpenFeignClient;
@Autowired
private EpmetHeartOpenFeignClient heartOpenFeignClient;
@Override
public List<LingShanPartyOrgAndOtherObjQtyRstDTO> partyOrgAndOtherObjectQtyStats(String agencyId) {
ArrayList<LingShanPartyOrgAndOtherObjQtyRstDTO> tl = new ArrayList<>();
// 1.党组织
AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(agencyId);
String orgIdPath = PidUtils.convertPid2OrgIdPath(agencyInfo.getId(), agencyInfo.getPids());
String level = agencyInfo.getLevel();
LambdaQueryWrapper<IcPartyOrgEntity> q;
if (OrgLevelEnum.COMMUNITY.getCode().equals(level)) {
// 社区级别,那直接用agencyId查,因为它下面就只有党支部一级了
q = new QueryWrapper<IcPartyOrgEntity>().select(" party_org_type, count(*) childrenQty").lambda()
// 本组织下级的所有子级
.eq(IcPartyOrgEntity::getAgencyId, agencyId)
.eq(IcPartyOrgEntity::getPartyOrgType, PartyOrgTypeEnum.BRANCH.getCode()) // 是社区,就只能查询支部了。这里要控制,因为支部的行政组织也是对应到社区,所以这里必须限制一下
.groupBy(IcPartyOrgEntity::getPartyOrgType);
} else {
// 街道及以上级别,用pids,因为要从社区开始查,本级及下级
q = new QueryWrapper<IcPartyOrgEntity>().select(" party_org_type, count(*) childrenQty").lambda()
// 本组织下级的所有子级,不含本级
.like(IcPartyOrgEntity::getAgencyPids, orgIdPath)
.groupBy(IcPartyOrgEntity::getPartyOrgType);
}
List<IcPartyOrgEntity> es = partyOrgDao.selectList(q);
List<LingShanPartyOrgAndOtherObjQtyRstDTO> l1 = es.stream().map(e -> {
LingShanPartyOrgAndOtherObjQtyRstDTO d = new LingShanPartyOrgAndOtherObjQtyRstDTO();
d.setPartyObjectTypeCode(e.getPartyOrgType().equals("5") ? LingShanPartyObjEnums.BRANCH.getCode() : LingShanPartyObjEnums.DW.getCode());
d.setName(PartyOrgTypeEnum.getEnumByCode(e.getPartyOrgType()).getName());
d.setValue(e.getChildrenQty());
return d;
}).collect(Collectors.toList());
tl.addAll(l1);
// 2.党群服务中心/站
List<LingShanPartyServiceCenterQtyRstDTO> serviceCenters = getResultDataOrReturnNull(govOrgOpenFeignClient.partyServiceCenterQtyStats(agencyId, OrgInfoConstant.AGENCY), ServiceConstant.GOV_ORG_SERVER);
if (serviceCenters == null) {
logger.error("【灵山大屏-党组织数量统计】查询党群服务中心失败,返回空");
} else {
List<LingShanPartyOrgAndOtherObjQtyRstDTO> temp = serviceCenters.stream().map(e -> {
LingShanPartyOrgAndOtherObjQtyRstDTO d = new LingShanPartyOrgAndOtherObjQtyRstDTO();
d.setPartyObjectTypeCode(e.getOrgType().equals(OrgInfoConstant.AGENCY) ? LingShanPartyObjEnums.PARTY_SERVICE_CENTER.getCode() : LingShanPartyObjEnums.PARTY_SERVICE_STATION.getCode());
d.setName(e.getOrgType().equals(OrgInfoConstant.AGENCY) ? "党群服务中心" : "党群服务站");
d.setValue(e.getQty());
return d;
}).collect(Collectors.toList());
temp.addAll(temp);
}
// 3.联建单位
Integer partyUnitQty = getResultDataOrReturnNull(heartOpenFeignClient.qtyInAgency(agencyId), ServiceConstant.EPMET_HEART_SERVER);
tl.add(new LingShanPartyOrgAndOtherObjQtyRstDTO(LingShanPartyObjEnums.PARTY_UNIT.getCode(), "联建单位", partyUnitQty));
// 4.检查缺项(党委, 支部, 党群服务中心, 党群服务站, 联建单位几项都要有,没有数据则显示0。党代表工作室目前还没开发,开发了也要有)
Map<String, LingShanPartyOrgAndOtherObjQtyRstDTO> map = tl.stream().collect(Collectors.toMap(LingShanPartyOrgAndOtherObjQtyRstDTO::getName, Function.identity()));
LinkedList rl = new LinkedList<LingShanPartyOrgAndOtherObjQtyRstDTO>();
LingShanPartyOrgAndOtherObjQtyRstDTO dw = map.get("党委");
rl.add(dw != null ? dw : new LingShanPartyOrgAndOtherObjQtyRstDTO(LingShanPartyObjEnums.DW.getCode(), "党委", 0));
LingShanPartyOrgAndOtherObjQtyRstDTO zb = map.get("支部");
rl.add(zb != null ? zb : new LingShanPartyOrgAndOtherObjQtyRstDTO(LingShanPartyObjEnums.BRANCH.getCode(), "支部", 0));
LingShanPartyOrgAndOtherObjQtyRstDTO dqfwzx = map.get("党群服务中心");
rl.add(dqfwzx != null ? dqfwzx : new LingShanPartyOrgAndOtherObjQtyRstDTO(LingShanPartyObjEnums.PARTY_SERVICE_CENTER.getCode(), "党群服务中心", 0));
LingShanPartyOrgAndOtherObjQtyRstDTO dqfwz = map.get("党群服务站");
rl.add(dqfwz != null ? dqfwz : new LingShanPartyOrgAndOtherObjQtyRstDTO(LingShanPartyObjEnums.PARTY_SERVICE_STATION.getCode(), "党群服务站", 0));
LingShanPartyOrgAndOtherObjQtyRstDTO ljdz = map.get("联建单位");
rl.add(ljdz != null ? ljdz : new LingShanPartyOrgAndOtherObjQtyRstDTO(LingShanPartyObjEnums.PARTY_UNIT.getCode(), "联建单位", 0));
return rl;
}
@Override
public List<LingShanScreenPartyObjectByTypeRstDTO> partyObjsByType(String objType, String orgId, String orgType) {
if (LingShanPartyObjEnums.DW.getCode().equals(objType)) {
// 党委
return listDw(orgId, orgType);
} else if (LingShanPartyObjEnums.BRANCH.getCode().equals(objType)) {
// 支部
return listBranch(orgId, orgType);
} else if (LingShanPartyObjEnums.PARTY_SERVICE_CENTER.getCode().equals(objType)
|| LingShanPartyObjEnums.PARTY_SERVICE_STATION.getCode().equals(objType)) {
// 党群服务中心
List<com.epmet.dto.result.LingShanScreenPartyObjectByTypeRstDTO> rsts =
getResultDataOrReturnNull(govOrgOpenFeignClient.lingshanPartyServiceCenterList(objType, orgId), ServiceConstant.GOV_ORG_SERVER);
return ConvertUtils.sourceToTarget(rsts, LingShanScreenPartyObjectByTypeRstDTO.class);
} else if (LingShanPartyObjEnums.PARTY_UNIT.getCode().equals(objType)) {
// 联建单位
List<LingShanPartyUnitRstDTO> rsts = getResultDataOrReturnNull(heartOpenFeignClient.lingshanPartyUnitList(orgId), ServiceConstant.EPMET_HEART_SERVER);
if (rsts == null) {
logger.error("【灵山大屏-党建相关对象列表查询】出错,");
}
return ConvertUtils.sourceToTarget(rsts, LingShanScreenPartyObjectByTypeRstDTO.class);
} else {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), null, "未知的数据类型");
}
}
/**
* @Description: 查询党委列表
* @param orgId:
* @param orgType:
* @Return java.util.List<com.epmet.resi.partymember.dto.partyOrg.result.LingShanScreenPartyObjectByTypeRstDTO>
* @Author: wangxianzhang
* @Date: 2023/5/12 1:42 PM
*/
List<LingShanScreenPartyObjectByTypeRstDTO> listDw(String orgId, String orgType) {
if (OrgInfoConstant.AGENCY.equals(orgType)) {
// 是行政组织,就要查询组织的下一级。查询下一级只能用AGENCY_PIDS
AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(orgId);
return partyOrgDao.lingshanListDw(PidUtils.convertPid2OrgIdPath(agencyInfo.getId(), agencyInfo.getPids()));
} else {
// 是网格,哪里来的党委?
return new ArrayList<>();
}
}
/**
* @Description: 查询支部支部是直属的
* @param orgId:
* @param orgType:
* @Return java.util.List<com.epmet.resi.partymember.dto.partyOrg.result.LingShanScreenPartyObjectByTypeRstDTO>
* @Author: wangxianzhang
* @Date: 2023/5/12 1:52 PM
*/
List<LingShanScreenPartyObjectByTypeRstDTO> listBranch(String orgId, String orgType) {
if (OrgInfoConstant.AGENCY.equals(orgType)) {
// 是行政组织
// AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(orgId);
return partyOrgDao.lingshanListZsBranchs(orgId);
} else {
// 是网格
// 这里应该是有问题。因为查询支部,只能用社区id查,不能用网格id查,party_org里面没有网格相关字段去关联
return new ArrayList<>();
}
}
}

35
epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/LingShanScreenController.java

@ -5,7 +5,10 @@ import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.modules.partyOrg.service.LingShanPartyOrgService;
import com.epmet.modules.partymember.service.LingShanScreenService;
import com.epmet.resi.partymember.dto.partyOrg.result.LingShanPartyOrgAndOtherObjQtyRstDTO;
import com.epmet.resi.partymember.dto.partyOrg.result.LingShanScreenPartyObjectByTypeRstDTO;
import com.epmet.resi.partymember.dto.partymember.result.LingShanScreenPartyActQtyStatsResultDTO;
import com.epmet.resi.partymember.dto.partymember.result.LingShanScreenPartyActTypeAndQtyResultDTO;
import com.epmet.resi.partymember.dto.partymember.result.LingShanScreenPartyOrgCategoryResultDTO;
@ -28,6 +31,9 @@ public class LingShanScreenController {
@Autowired
private LingShanScreenService lingShanScreenService;
@Autowired
private LingShanPartyOrgService lingShanPartyOrgService;
/**
* @description: 党建引领党组织和数量
* @param agencyId: 当前组织id
@ -117,4 +123,33 @@ public class LingShanScreenController {
return new Result<Integer>().ok(lingShanScreenService.getPartymemberQtyOfOrg(agencyId));
}
/**
* @Description: 灵山党组织以及其他党相关对象(党群服务中心站等)的数量统计,供选择
* @param :
* @Return com.epmet.commons.tools.utils.Result<java.util.List<com.epmet.resi.partymember.dto.partyOrg.result.LingShanPartyOrgAndOtherObjQtyRstDTO>>
* @Author: wangxianzhang
* @Date: 2023/5/11 3:45 PM
*/
@GetMapping("partyOrgAndOtherObjectQtyStats")
public Result<List<LingShanPartyOrgAndOtherObjQtyRstDTO>> partyOrgAndOtherObjectQtyStats(@RequestParam(value = "agencyId", required = true) String agencyId) {
List<LingShanPartyOrgAndOtherObjQtyRstDTO> l = lingShanPartyOrgService.partyOrgAndOtherObjectQtyStats(agencyId);
return new Result<List<LingShanPartyOrgAndOtherObjQtyRstDTO>>().ok(l);
}
/**
* @Description: 灵山街道按照党类型查询党相关对象
* @param :
* @Return com.epmet.commons.tools.utils.Result<java.util.List<com.epmet.resi.partymember.dto.partyOrg.result.LingShanScreenPartyObjectByTypeRstDTO>>
* @Author: wangxianzhang
* @Date: 2023/5/12 1:18 PM
*/
@GetMapping("partyObjsByType")
public Result<List<LingShanScreenPartyObjectByTypeRstDTO>> partyObjsByType(@RequestParam(value = "objType", required = false) String objType,
@RequestParam(value = "orgId", required = false) String orgId,
@RequestParam(value = "orgType", required = false) String orgType) {
List<LingShanScreenPartyObjectByTypeRstDTO> l = lingShanPartyOrgService.partyObjsByType(objType, orgId, orgType);
return new Result<List<LingShanScreenPartyObjectByTypeRstDTO>>().ok(l);
}
}

26
epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partyOrg/IcPartyOrgDao.xml

@ -293,4 +293,30 @@
group by org.ID, org.PARTY_ORG_NAME
</select>
<!-- 灵山:省委~党委党组织+党员数量列表 -->
<select id="lingshanListDw"
resultType="com.epmet.resi.partymember.dto.partyOrg.result.LingShanScreenPartyObjectByTypeRstDTO">
select
o.ID, o.PARTY_ORG_NAME name, o.LATITUDE, o.LONGITUDE, count(*) partymember_qty
from ic_party_org o
left join ic_party_member m on (o.AGENCY_ID = m.AGENCY_ID and m.DEL_FLAG = 0)
where o.DEL_FLAG = 0
and o.AGENCY_PIDS = #{orgIdPath}
and o.PARTY_ORG_TYPE &lt;= 4
group by o.ID, o.PARTY_ORG_NAME, o.LATITUDE, o.LONGITUDE
</select>
<!--直属支部-->
<select id="lingshanListZsBranchs"
resultType="com.epmet.resi.partymember.dto.partyOrg.result.LingShanScreenPartyObjectByTypeRstDTO">
select
o.ID, o.PARTY_ORG_NAME name, o.LATITUDE, o.LONGITUDE, count(*) partymember_qty
from ic_party_org o
left join ic_party_member m on (o.ID = m.SSZB and m.DEL_FLAG = 0)
where o.DEL_FLAG = 0
and o.AGENCY_ID = #{orgId}
and o.PARTY_ORG_TYPE = 5
group by o.ID, o.PARTY_ORG_NAME, o.LATITUDE, o.LONGITUDE
</select>
</mapper>

5
epmet-user/epmet-user-client/src/main/java/com/epmet/constant/RoleKeyConstants.java

@ -49,4 +49,9 @@ public class RoleKeyConstants {
*/
public static final String ROLE_KEY_GRID_MEMBER = "grid_member";
/**
* 代办员
*/
public static final String ROLE_KEY_AGENT = "agent";
}

2
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/CustomerStaffDTO.java

@ -149,5 +149,7 @@ public class CustomerStaffDTO implements Serializable {
* 身份证号
*/
private String idCard;
private String culture;
private Date birthday;
}

10
epmet-user/epmet-user-server/src/main/java/com/epmet/entity/CustomerStaffEntity.java

@ -111,4 +111,14 @@ public class CustomerStaffEntity extends BaseEpmetEntity {
* 身份证号
*/
private String idCard;
/**
* 出生日期
*/
private Date birthday;
/**
* 文化程度0小学及文盲,1初中,2高中,3大专,4本科,5硕士,6博士,7中专
*/
private String culture;
}

44
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/CustomerStaffServiceImpl.java

@ -29,6 +29,7 @@ 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.exception.RenException;
import com.epmet.commons.tools.feign.ResultDataResolver;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.RedisKeys;
import com.epmet.commons.tools.redis.RedisUtils;
@ -37,6 +38,8 @@ import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache;
import com.epmet.commons.tools.security.password.PasswordUtils;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.IdCardRegexUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.CustomerStaffConstant;
import com.epmet.constant.RoleKeyConstants;
@ -52,10 +55,7 @@ import com.epmet.entity.CustomerStaffEntity;
import com.epmet.entity.GovStaffRoleEntity;
import com.epmet.entity.StaffRoleEntity;
import com.epmet.entity.UserEntity;
import com.epmet.feign.AuthFeignClient;
import com.epmet.feign.GovAccessFeignClient;
import com.epmet.feign.GovOrgOpenFeignClient;
import com.epmet.feign.OperCrmOpenFeignClient;
import com.epmet.feign.*;
import com.epmet.service.CustomerStaffService;
import com.epmet.service.GovStaffRoleService;
import com.epmet.service.StaffRoleService;
@ -73,6 +73,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.time.LocalDate;
import java.util.*;
import java.util.concurrent.ExecutorService;
import java.util.stream.Collectors;
@ -85,7 +86,7 @@ import java.util.stream.Collectors;
*/
@Slf4j
@Service
public class CustomerStaffServiceImpl extends BaseServiceImpl<CustomerStaffDao, CustomerStaffEntity> implements CustomerStaffService {
public class CustomerStaffServiceImpl extends BaseServiceImpl<CustomerStaffDao, CustomerStaffEntity> implements CustomerStaffService, ResultDataResolver {
private final Logger logger = LogManager.getLogger(getClass());
@Autowired
private GovStaffRoleService govStaffRoleService;
@ -110,6 +111,9 @@ public class CustomerStaffServiceImpl extends BaseServiceImpl<CustomerStaffDao,
@Autowired
private RedisUtils redisUtils;
@Autowired
private EpmetAdminOpenFeignClient adminOpenFeignClient;
@Override
public PageData<CustomerStaffDTO> page(Map<String, Object> params) {
IPage<CustomerStaffEntity> page = baseDao.selectPage(
@ -339,6 +343,20 @@ public class CustomerStaffServiceImpl extends BaseServiceImpl<CustomerStaffDao,
List<StaffRoleResultDTO> staffRoleResultDTOS = ConvertUtils.sourceToTarget(staffExistRole.getData(), StaffRoleResultDTO.class);
resultDTO.setNewRoleList(staffRoleResultDTOS);
}
resultDTO.setIdCard(customerStaffDTO.getIdCard());
resultDTO.setBirthday(customerStaffDTO.getBirthday());
resultDTO.setCulture(customerStaffDTO.getCulture());
List<SysDictDataDTO> dict = getResultDataOrReturnNull(adminOpenFeignClient.dictDataList("education"), ServiceConstant.EPMET_ADMIN_SERVER);
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(dict)) {
for (SysDictDataDTO d : dict) {
if (d.getDictValue().equals(customerStaffDTO.getCulture())) {
resultDTO.setCultureDisplay(d.getDictLabel());
break;
}
}
}
return new Result<StaffInitResultDTO>().ok(resultDTO);
}
@ -370,6 +388,14 @@ public class CustomerStaffServiceImpl extends BaseServiceImpl<CustomerStaffDao,
staffEntity.setWorkType(fromDTO.getWorkType());
staffEntity.setEnableFlag(CustomerStaffConstant.ENABLE);
staffEntity.setPassword(PasswordUtils.encode("12345678"));
staffEntity.setIdCard(fromDTO.getIdCard());
if (StringUtils.isNotBlank(fromDTO.getIdCard())) {
LocalDate birthday = IdCardRegexUtils.parse(fromDTO.getIdCard()).getParsedResult().getBirthday();
staffEntity.setBirthday(DateUtils.localDate2Date(birthday));
}
staffEntity.setCulture(fromDTO.getCulture());
baseDao.insert(staffEntity);
//工作人员角色关联表
@ -484,6 +510,14 @@ public class CustomerStaffServiceImpl extends BaseServiceImpl<CustomerStaffDao,
staffEntity.setMobile(fromDTO.getMobile());
staffEntity.setGender(fromDTO.getGender());
staffEntity.setWorkType(fromDTO.getWorkType());
staffEntity.setCulture(fromDTO.getCulture());
staffEntity.setIdCard(fromDTO.getIdCard());
if (StringUtils.isNotBlank(fromDTO.getIdCard())) {
LocalDate birthday = IdCardRegexUtils.parse(fromDTO.getIdCard()).getParsedResult().getBirthday();
staffEntity.setBirthday(DateUtils.localDate2Date(birthday));
}
staffEntity.setCulture(fromDTO.getCulture());
baseDao.updateById(staffEntity);
//清空权限关联

Loading…
Cancel
Save