Browse Source

Merge branch 'dev_gridmember_fusion' into dev

master
sunyuchao 4 years ago
parent
commit
eb9880d32c
  1. 3
      epmet-gateway/src/main/resources/bootstrap.yml
  2. 29
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/form/OpenStaffDetailFormDTO.java
  3. 28
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/OpenStaffDetailResultDTO.java
  4. 13
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/EpmetUserController.java
  5. 9
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/CustomerStaffDao.java
  6. 6
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/CustomerStaffAgencyDao.java
  7. 16
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/datastats/FactGridMemberStatisticsDailyEntity.java
  8. 8
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/EpmetUserService.java
  9. 36
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java
  10. 7
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgService.java
  11. 10
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java
  12. 2
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/FactGridMemberStatisticsDailyDao.xml
  13. 12
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/CustomerStaffDao.xml
  14. 14
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerStaffAgencyDao.xml
  15. 116
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/crm/CustomerRelationDTO.java
  16. 21
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/extract/form/SyncOrgInfoFormDTO.java
  17. 16
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/FactGridMemberStatisticsDailyDTO.java
  18. 82
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/form/GmUploadDataFormDTO.java
  19. 65
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/form/GmUploadEventFormDTO.java
  20. 10
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/user/result/StatsStaffPatrolRecordDailyDTO.java
  21. 22
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java
  22. 29
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/StatsUserController.java
  23. 8
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/crm/CustomerRelationDao.java
  24. 15
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenCustomerAgencyDao.java
  25. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenCustomerGridDao.java
  26. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/org/StatsCustomerAgencyDao.java
  27. 45
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/stats/DataStatsDao.java
  28. 18
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/user/StatsStaffPatrolRecordDailyDao.java
  29. 13
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/user/UserDao.java
  30. 16
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/evaluationindex/extract/FactGridMemberStatisticsDailyEntity.java
  31. 5
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/org/CustomerAgencyEntity.java
  32. 5
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/org/CustomerGridEntity.java
  33. 16
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/user/StatsStaffPatrolRecordDailyEntity.java
  34. 16
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/StatsUserService.java
  35. 7
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/crm/CustomerService.java
  36. 13
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/crm/impl/CustomerServiceImpl.java
  37. 3
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/biz/impl/BizDataStatsServiceImpl.java
  38. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactGridMemberStatisticsDailyServiceImpl.java
  39. 30
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/ScreenCustomerAgencyService.java
  40. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/ScreenCustomerGridService.java
  41. 36
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenCustomerAgencyServiceImpl.java
  42. 5
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenCustomerGridServiceImpl.java
  43. 159
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsUserServiceImpl.java
  44. 10
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/CustomerAgencyService.java
  45. 3
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/CustomerGridService.java
  46. 168
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/impl/CustomerAgencyServiceImpl.java
  47. 13
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/impl/CustomerGridServiceImpl.java
  48. 13
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/UserService.java
  49. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/StatsStaffPatrolServiceImpl.java
  50. 19
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/UserServiceImpl.java
  51. 6
      epmet-module/data-statistical/data-statistical-server/src/main/resources/db/migration/V0.0.21__grid_member_statistics.sql
  52. 11
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/crm/CustomerRelationDao.xml
  53. 51
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenCustomerAgencyDao.xml
  54. 15
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenCustomerGridDao.xml
  55. 4
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/org/CustomerGridDao.xml
  56. 15
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/org/StatsCustomerAgencyDao.xml
  57. 108
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/DatsStatsDao.xml
  58. 11
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/user/StatsStaffPatrolRecordDailyDao.xml
  59. 78
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/user/UserDao.xml
  60. 2
      epmet-module/gov-org/gov-org-server/src/main/resources/db/migration/V0.0.5__add_sync_flag.sql
  61. 12
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/StatsStaffPatrolRecordDailyDTO.java
  62. 16
      epmet-user/epmet-user-server/src/main/java/com/epmet/entity/StatsStaffPatrolRecordDailyEntity.java
  63. 4
      epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.16__alter_stats_staff_patrol_record_daily.sql

3
epmet-gateway/src/main/resources/bootstrap.yml

@ -481,6 +481,9 @@ epmet:
- /epmetuser/customerstaff/customerlist
- /message/template/**
- /data/aggregator/project/projectdistribution
- /data/aggregator/epmetuser/open-staffdetail
- /data/stats/statsuser/gm-uploadevent
- /data/stats/statsuser/gm-uploaddata
# 对外开放接口认证白名单
externalAuthUrlsWhiteList:

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

@ -0,0 +1,29 @@
package com.epmet.dataaggre.dto.epmetuser.form;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @Description 对外接口--查询工作人员基本信息-接口入参
* @Auth sun
*/
@Data
public class OpenStaffDetailFormDTO implements Serializable {
private static final long serialVersionUID = -3381286960911634231L;
/**
* 客户Id
*/
@NotBlank(message = "客户Id不能为空", groups = OpenStaffDetailFormDTO.Open.class)
private String customerId;
/**
* 手机号
*/
@NotBlank(message = "手机号不能为空", groups = OpenStaffDetailFormDTO.Open.class)
private String mobile;
public interface Open extends CustomerClientShowGroup {}
}

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

@ -0,0 +1,28 @@
package com.epmet.dataaggre.dto.epmetuser.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Description 对外接口--查询工作人员基本信息-接口返参
* @Auth sun
*/
@Data
public class OpenStaffDetailResultDTO implements Serializable {
private static final long serialVersionUID = 7129564173128153335L;
//工作人员用户id
private String staffId = "";
//工作人员姓名
private String staffName = "";
//手机号
private String mobile = "";
//用户所属组织id
private String agencyId = "";
//用户所属组织全路径名称
private String agencyAllName = "";
//客户Id
private String customerId = "";
}

13
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/EpmetUserController.java

@ -7,10 +7,12 @@ import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dataaggre.dto.epmetuser.form.OpenStaffDetailFormDTO;
import com.epmet.dataaggre.dto.epmetuser.form.GridMemberStatsFormDTO;
import com.epmet.dataaggre.dto.epmetuser.form.PatrolDateListFormDTO;
import com.epmet.dataaggre.dto.epmetuser.form.PatrolRecordListFormDTO;
import com.epmet.dataaggre.dto.epmetuser.form.StaffListFormDTO;
import com.epmet.dataaggre.dto.epmetuser.result.OpenStaffDetailResultDTO;
import com.epmet.dataaggre.dto.epmetuser.result.PatrolDateListResultDTO;
import com.epmet.dataaggre.dto.epmetuser.result.PatrolRecordListResultDTO;
import com.epmet.dataaggre.dto.epmetuser.result.PersonalPatrolListResultDTO;
@ -186,5 +188,16 @@ public class EpmetUserController {
maps.add(projectClosedCountMap);
return maps;
}
/**
* @Param formDTO
* @Description 对外接口--查询工作人员基本信息
* @author sun
*/
@PostMapping("open-staffdetail")
public Result<OpenStaffDetailResultDTO> openStaffDetail(@RequestBody OpenStaffDetailFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, OpenStaffDetailFormDTO.Open.class);
return new Result<OpenStaffDetailResultDTO>().ok(epmetUserService.openStaffDetail(formDTO));
}
}

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

@ -18,8 +18,10 @@
package com.epmet.dataaggre.dao.epmetuser;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dataaggre.dto.epmetuser.CustomerStaffDTO;
import com.epmet.dataaggre.entity.epmetuser.CustomerStaffEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* 政府工作人员表
@ -29,5 +31,10 @@ import org.apache.ibatis.annotations.Mapper;
*/
@Mapper
public interface CustomerStaffDao extends BaseDao<CustomerStaffEntity> {
/**
* @Description 按staffId查询基础信息
* @author sun
*/
CustomerStaffDTO selectByMobile(@Param("customerId") String customerId, @Param("mobile") String mobile);
}

6
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/CustomerStaffAgencyDao.java

@ -18,6 +18,7 @@
package com.epmet.dataaggre.dao.govorg;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dataaggre.dto.govorg.CustomerAgencyDTO;
import com.epmet.dataaggre.dto.govorg.CustomerStaffAgencyDTO;
import com.epmet.dataaggre.entity.govorg.CustomerStaffAgencyEntity;
import org.apache.ibatis.annotations.Mapper;
@ -38,4 +39,9 @@ public interface CustomerStaffAgencyDao extends BaseDao<CustomerStaffAgencyEntit
**/
CustomerStaffAgencyDTO selectByStaffId(@Param("userId") String userId);
/**
* @Description 查询工作人员所属组织信息
* @author sun
*/
CustomerAgencyDTO selectAgencyByStaffId(@Param("customerId") String customerId, @Param("staffId") String staffId);
}

16
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/datastats/FactGridMemberStatisticsDailyEntity.java

@ -53,11 +53,21 @@ public class FactGridMemberStatisticsDailyEntity extends BaseEpmetEntity {
*/
private String yearId;
/**
* 客户ID
*/
/**
* 来源类型 external:外部internal:内部
*/
private String sourceType;
/**
* 客户Id
*/
private String customerId;
/**
* 数据来源客户Id
*/
private String sourceCustomerId;
/**
* 组织ID
*/

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

@ -1,5 +1,6 @@
package com.epmet.dataaggre.service.epmetuser;
import com.epmet.dataaggre.dto.epmetuser.form.OpenStaffDetailFormDTO;
import com.epmet.dataaggre.dto.epmetuser.form.PatrolDateListFormDTO;
import com.epmet.dataaggre.dto.epmetuser.form.PatrolRecordListFormDTO;
import com.epmet.dataaggre.dto.epmetuser.form.StaffListFormDTO;
@ -73,4 +74,11 @@ public interface EpmetUserService {
* @author sun
*/
List<PersonalPatrolListResultDTO> personalPatrolList(String staffId);
/**
* @Param formDTO
* @Description 对外接口--查询工作人员基本信息
* @author sun
*/
OpenStaffDetailResultDTO openStaffDetail(OpenStaffDetailFormDTO formDTO);
}

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

@ -4,15 +4,19 @@ import com.epmet.commons.dynamic.datasource.annotation.DataSource;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.dataaggre.constant.DataSourceConstant;
import com.epmet.dataaggre.dao.epmetuser.CustomerStaffDao;
import com.epmet.dataaggre.dao.epmetuser.StaffPatrolRecordDao;
import com.epmet.dataaggre.dao.epmetuser.StaffRoleDao;
import com.epmet.dataaggre.dao.epmetuser.UserBaseInfoDao;
import com.epmet.dataaggre.dto.epmetuser.CustomerStaffDTO;
import com.epmet.dataaggre.dto.epmetuser.StaffPatrolDetailDTO;
import com.epmet.dataaggre.dto.epmetuser.StaffPatrolRecordDTO;
import com.epmet.dataaggre.dto.epmetuser.form.OpenStaffDetailFormDTO;
import com.epmet.dataaggre.dto.epmetuser.form.PatrolDateListFormDTO;
import com.epmet.dataaggre.dto.epmetuser.form.PatrolRecordListFormDTO;
import com.epmet.dataaggre.dto.epmetuser.form.StaffListFormDTO;
import com.epmet.dataaggre.dto.epmetuser.result.*;
import com.epmet.dataaggre.dto.govorg.CustomerAgencyDTO;
import com.epmet.dataaggre.dto.govorg.CustomerGridDTO;
import com.epmet.dataaggre.dto.govorg.result.GridStaffResultDTO;
import com.epmet.dataaggre.service.epmetuser.EpmetUserService;
@ -51,6 +55,8 @@ public class EpmetUserServiceImpl implements EpmetUserService {
private StaffPatrolRecordService staffPatrolRecordService;
@Resource
private StaffRoleDao staffRoleDao;
@Resource
private CustomerStaffDao customerStaffDao;
/**
* @Description 根据UserIds查询
@ -329,5 +335,35 @@ public class EpmetUserServiceImpl implements EpmetUserService {
return resultList;
}
/**
* @Param formDTO
* @Description 对外接口--查询工作人员基本信息
* @author sun
*/
@Override
public OpenStaffDetailResultDTO openStaffDetail(OpenStaffDetailFormDTO formDTO) {
OpenStaffDetailResultDTO resultDTO = new OpenStaffDetailResultDTO();
//1.按staffId查询基础信息
CustomerStaffDTO staffDTO = customerStaffDao.selectByMobile(formDTO.getCustomerId(), formDTO.getMobile());
if (null == staffDTO) {
return resultDTO;
}
//2.查询工作人员所属组织信息
CustomerAgencyDTO agencyDTO = govOrgService.gridByAgencyId(formDTO.getCustomerId(), staffDTO.getUserId());
//3.封装数据并返回
resultDTO.setCustomerId(formDTO.getCustomerId());
if (null != agencyDTO) {
resultDTO.setAgencyId(agencyDTO.getId());
resultDTO.setAgencyAllName(agencyDTO.getAllParentName());
}
resultDTO.setStaffId(staffDTO.getUserId());
resultDTO.setStaffName(staffDTO.getRealName());
resultDTO.setMobile(formDTO.getMobile());
return resultDTO;
}
}

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

@ -1,5 +1,6 @@
package com.epmet.dataaggre.service.govorg;
import com.epmet.dataaggre.dto.govorg.CustomerAgencyDTO;
import com.epmet.dataaggre.dto.govorg.CustomerGridDTO;
import com.epmet.dataaggre.dto.govorg.form.NextAreaCodeFormDTO;
import com.epmet.dataaggre.dto.govorg.result.*;
@ -65,4 +66,10 @@ public interface GovOrgService {
* @author sun
*/
List<CustomerGridDTO> getGridInfoList(List<String> gridIds, String staffId);
/**
* @Description 查询工作人员所属组织信息
* @author sun
*/
CustomerAgencyDTO gridByAgencyId(String customerId, String staffId);
}

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

@ -11,6 +11,7 @@ import com.epmet.dataaggre.dao.govorg.CustomerAgencyDao;
import com.epmet.dataaggre.dao.govorg.CustomerGridDao;
import com.epmet.dataaggre.dao.govorg.CustomerStaffAgencyDao;
import com.epmet.dataaggre.dao.govorg.CustomerStaffGridDao;
import com.epmet.dataaggre.dto.govorg.CustomerAgencyDTO;
import com.epmet.dataaggre.dto.govorg.CustomerGridDTO;
import com.epmet.dataaggre.dto.govorg.CustomerStaffAgencyDTO;
import com.epmet.dataaggre.dto.govorg.form.NextAreaCodeFormDTO;
@ -275,4 +276,13 @@ public class GovOrgServiceImpl implements GovOrgService {
return list;
}
/**
* @Description 查询工作人员所属组织信息
* @author sun
*/
@Override
public CustomerAgencyDTO gridByAgencyId(String customerId, String staffId) {
return customerStaffAgencyDao.selectAgencyByStaffId(customerId, staffId);
}
}

2
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/FactGridMemberStatisticsDailyDao.xml

@ -98,7 +98,7 @@
and del_flag = 0
</where>
group by member.staff_id, member.grid_id
order by ${sort} desc
order by ${sort} desc, convert(member.staff_name using gbk) asc, member.GRID_ID asc
</select>
<select id="getGridMemberIssueProjectStats"

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

@ -3,4 +3,16 @@
<mapper namespace="com.epmet.dataaggre.dao.epmetuser.CustomerStaffDao">
<select id="selectByMobile" resultType="com.epmet.dataaggre.dto.epmetuser.CustomerStaffDTO">
SELECT
*
FROM
customer_staff
WHERE
del_flag = '0'
AND customer_id = #{customerId}
AND mobile = #{mobile}
LIMIT 1
</select>
</mapper>

14
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerStaffAgencyDao.xml

@ -16,4 +16,18 @@
AND user_id = #{userId}
</select>
<select id="selectAgencyByStaffId" resultType="com.epmet.dataaggre.dto.govorg.CustomerAgencyDTO">
SELECT
ca.id,
ca.all_parent_name
FROM
customer_staff_agency csa
INNER JOIN customer_agency ca ON csa.agency_id = ca.id
WHERE
csa.del_flag = '0'
AND ca.del_flag = '0'
AND csa.customer_id = #{customerId}
AND csa.user_id = #{staffId}
</select>
</mapper>

116
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/crm/CustomerRelationDTO.java

@ -0,0 +1,116 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dto.crm;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 客户关系表(01.14 add)
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-02-03
*/
@Data
public class CustomerRelationDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private String id;
/**
* 客户id
*/
private String customerId;
/**
* 父级客户id;如果是顶级客户此列=0
*/
private String parentCustomerId;
/**
* 当前客户的所有父级客户id,以英文冒号隔开如果是顶级客户此列=0
*/
private String pids;
/**
* 当前客户类型取值 external:外部客户internal:内部客户
*/
private String customerType;
/**
* 父级客户类型取值 external:外部客户internal:内部客户;如果是顶级客户此列=0
*/
private String parentCustomerType;
/**
* open,closed是否启用
*/
private String status;
/**
* 当前客户级别社区级community
街道:street,
区县级: district,
市级: city
省级:province
*/
private String level;
/**
* 当前客户的地区编码实际就是根组织的area_code
*/
private String areaCode;
/**
* 删除标识0未删除1已删除
*/
private String delFlag;
/**
* 乐观锁
*/
private Integer revision;
/**
* 创建人
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新人
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
}

21
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/extract/form/SyncOrgInfoFormDTO.java

@ -0,0 +1,21 @@
package com.epmet.dto.extract.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* 描述一下
*
* @author yinzuomei@elink-cn.com
* @date 2021/7/6 16:37
*/
@Data
public class SyncOrgInfoFormDTO implements Serializable {
private static final long serialVersionUID = -3533276226280926966L;
@NotBlank(message = "孔村or榆山or锦水客户id不能为空")
private String fromCustomerId;
@NotBlank(message = "平阴客户id不能为空")
private String toCustomerId;
}

16
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/FactGridMemberStatisticsDailyDTO.java

@ -53,11 +53,21 @@ public class FactGridMemberStatisticsDailyDTO implements Serializable {
*/
private String yearId;
/**
* 客户ID
*/
/**
* 来源类型 external:外部internal:内部
*/
private String sourceType;
/**
* 客户Id
*/
private String customerId;
/**
* 数据来源客户Id
*/
private String sourceCustomerId;
/**
* 组织ID
*/

82
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/form/GmUploadDataFormDTO.java

@ -0,0 +1,82 @@
package com.epmet.dto.stats.form;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* @Description 数据上报--网格员事件总数上报-接口入参
* @Auth sun
*/
@Data
public class GmUploadDataFormDTO implements Serializable {
private static final long serialVersionUID = -9178779369245037701L;
/**
* 为true时需要删除历史数据
*/
private Boolean isFirst;
//数据集合对象
@NotEmpty(message = "数据集合对象不能为空",groups = UploadData.class)
private List<DataList> dataList;
public interface UploadData extends CustomerClientShowGroup {}
@Data
public static class DataList{
//来源类型 external:外部,internal:内部
private String sourceType;
//客户Id 【dim_customer.id】[接口传入的是来源数据的客户Id]
private String customerId;
//数据来源客户Id
private String parentCustomerId;
//机关Id 【dim_agency.id】
private String agencyId;
//日维度Id 【dim_date.id】
private String dateId;
//月维度Id 【dim_month.id】
private String monthId;
//年维度Id 【dim_year.id】
private String yearId;
//网格id
private String gridId;
//上级ID(网格所属Agency的上级组织Id)
private String pid;
//所有agencyId的上级组织ID(包含agencyId)
private String pids;
//工作人员id
private String staffId;
//工作人员姓名
private String staffName;
//项目立项数,截止到当前dateId的总数
private Integer projectCount;
//议题转项目数,截止到当前dateId的总数
private Integer issueToProjectCount;
//议题关闭数,截止到当前dateId的总数
private Integer closedIssueCount;
//项目响应数,截止到当前dateId的总数
private Integer projectResponseCount;
//项目吹哨数,截止到当前dateId的总数
private Integer projectTransferCount;
//项目结案数,dateId这一天的增量
private Integer projectClosedCount;
//项目立项数,dateId这一天的增量
private Integer projectIncr;
//议题转项目数,dateId这一天的增量
private Integer issueToProjectIncr;
//议题关闭数,dateId这一天的增量
private Integer closedIssueIncr;
//项目响应数,dateId这一天的增量
private Integer projectResponseIncr;
//项目吹哨数,dateId这一天的增量
private Integer projectTransferIncr;
//项目结案数,截止到当前dateId的总数
private Integer projectClosedIncr;
}
}

65
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/stats/form/GmUploadEventFormDTO.java

@ -0,0 +1,65 @@
package com.epmet.dto.stats.form;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* @Description 数据上报--网格员事件总数上报-接口入参
* @Auth sun
*/
@Data
public class GmUploadEventFormDTO implements Serializable {
private static final long serialVersionUID = -9178779369245037701L;
//为true时需要删除历史数据
private Boolean isFirst;
//数据集合对象
@NotEmpty(message = "数据集合对象不能为空",groups = UploadEvent.class)
private List<DataList> dataList;
public interface UploadEvent extends CustomerClientShowGroup {}
@Data
public static class DataList{
//来源类型 external:外部,internal:内部
private String sourceType;
//客户Id 【dim_customer.id】[接口传入的是来源数据的客户Id]
private String customerId;
//数据来源客户Id
private String parentCustomerId;
//机关Id 【dim_agency.id】
private String agencyId;
//日维度Id 【dim_date.id】
private String dateId;
//周维度Id 【dim_week.id】
private String weekId;
//月维度Id 【dim_month.id】
private String monthId;
//季ID
private String quarterId;
//年维度Id 【dim_year.id】
private String yearId;
//网格id
private String gridId;
//网格所有上级id
private String gridPids;
//产品这边工作人员用户id
private String staffId;
//巡查次数
private Integer patrolTotal = 0;
//巡查时长 单位:秒
private Integer totalTime = 0;
//事件数【立项项目数】
private Integer reportProjectCount = 0;
//最新的巡查开始时间
private Date latestPatrolTime;
//最新的巡查状态 正在巡查中:patrolling;结束:end
private String latestPatrolStatus = "end";
}
}

10
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/user/result/StatsStaffPatrolRecordDailyDTO.java

@ -39,11 +39,21 @@ public class StatsStaffPatrolRecordDailyDTO implements Serializable {
*/
private String id;
/**
* 来源类型 external:外部internal:内部
*/
private String sourceType;
/**
* 客户Id
*/
private String customerId;
/**
* 来源客户Id
*/
private String sourceCustomerId;
/**
* 统计日期 关联日期dim表
*/

22
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java

@ -6,6 +6,7 @@ import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.constant.DataSourceConstant;
import com.epmet.constant.IndexCalConstant;
import com.epmet.dao.evaluationindex.indexcoll.FactIndexGovrnAblityGridMonthlyDao;
@ -22,6 +23,7 @@ import com.epmet.dto.StatsFormDTO;
import com.epmet.dto.extract.form.ExtractFactGridGovernDailyFromDTO;
import com.epmet.dto.extract.form.ExtractOriginFormDTO;
import com.epmet.dto.extract.form.ExtractScreenFormDTO;
import com.epmet.dto.extract.form.SyncOrgInfoFormDTO;
import com.epmet.dto.indexcal.CalculateCommonFormDTO;
import com.epmet.dto.project.form.UpdateProjectSatisfactionScoreFormDTO;
import com.epmet.dto.screen.form.ScreenCentralZoneDataFormDTO;
@ -43,6 +45,8 @@ import com.epmet.service.evaluationindex.extract.todata.*;
import com.epmet.service.evaluationindex.extract.toscreen.*;
import com.epmet.service.evaluationindex.indexcal.*;
import com.epmet.service.evaluationindex.screen.*;
import com.epmet.service.org.CustomerAgencyService;
import com.epmet.service.org.CustomerGridService;
import com.epmet.service.stats.DimAgencyService;
import com.epmet.service.stats.DimCustomerPartymemberService;
import com.epmet.service.stats.DimCustomerService;
@ -978,4 +982,22 @@ public class DemoController {
return new Result();
}
@Autowired
private CustomerAgencyService customerAgencyService;
@Autowired
private CustomerGridService customerGridService;
/**
* 将孔村榆山锦水3个街道的网格组织插入到gov-org库的customer_gridcustomer_agency
*
* @param formDTO
* @return Result<XxxxDO>
*/
@PostMapping("syncorginfo")
public Result syncOrgInfo(@RequestBody SyncOrgInfoFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
customerAgencyService.sysAgencyInfo(formDTO.getFromCustomerId(), formDTO.getToCustomerId());
return new Result();
}
}

29
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/StatsUserController.java

@ -1,9 +1,13 @@
package com.epmet.controller;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.StatsFormDTO;
import com.epmet.dto.stats.form.GmUploadDataFormDTO;
import com.epmet.dto.stats.form.GmUploadEventFormDTO;
import com.epmet.service.StatsUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@ -32,4 +36,29 @@ public class StatsUserController {
statsUserService.partition(formDTO);
return new Result();
}
/**
* @Param formDTO
* @Description 数据上报--网格员事件总数上报
* @author sun
*/
@PostMapping("gm-uploadevent")
public Result gmUploadEvent(@RequestBody GmUploadEventFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, GmUploadEventFormDTO.UploadEvent.class);
statsUserService.gmUploadEvent(formDTO);
return new Result();
}
/**
* @Param formDTO
* @Description 数据上报--网格员数据分析上报
* @author sun
*/
@PostMapping("gm-uploaddata")
public Result gmUploadData(@RequestBody GmUploadDataFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, GmUploadDataFormDTO.UploadData.class);
statsUserService.gmUploadData(formDTO);
return new Result();
}
}

8
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/crm/CustomerRelationDao.java

@ -18,6 +18,7 @@
package com.epmet.dao.crm;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.crm.CustomerRelationDTO;
import com.epmet.dto.indexcal.CustomerSubInfoDTO;
import com.epmet.entity.crm.CustomerRelationEntity;
import org.apache.ibatis.annotations.Mapper;
@ -51,4 +52,11 @@ public interface CustomerRelationDao extends BaseDao<CustomerRelationEntity> {
* @date 2021/3/23 上午10:21
*/
List<CustomerRelationEntity> selectSubCustomer(@Param("customerId") String customerId);
/**
* @Description 查询客户所属父客户信息
* @author sun
*/
CustomerRelationDTO selectByCustomerId(@Param("customerId") String customerId);
}

15
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenCustomerAgencyDao.java

@ -18,6 +18,7 @@
package com.epmet.dao.evaluationindex.screen;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.CustomerAgencyDTO;
import com.epmet.dto.extract.form.PartyBaseInfoFormDTO;
import com.epmet.dto.extract.form.ScreenPartyBranchDataFormDTO;
import com.epmet.dto.extract.form.ScreenPartyLinkMassesDataFormDTO;
@ -34,7 +35,6 @@ import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
* 组织机构信息
@ -231,4 +231,17 @@ public interface ScreenCustomerAgencyDao extends BaseDao<ScreenCustomerAgencyEnt
* @date 2021/5/24 9:42 上午
*/
ScreenCustomerAgencyEntity selectTopAgency(@Param("customerId")String customerId);
ScreenCustomerAgencyEntity selectRootAgency(String customerId);
List<ScreenCustomerAgencyEntity> selectByPid(@Param("customerId") String customerId, @Param("parentAgencyId")String parentAgencyId);
List<ScreenCustomerAgencyEntity> selectKcCommunity(String customerId);
/**
* @Description 查询客户index库组织信息供数据封装使用
* @author sun
*/
List<CustomerAgencyDTO> selectByCustomerId(@Param("customerId") String customerId);
}

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenCustomerGridDao.java

@ -216,4 +216,6 @@ public interface ScreenCustomerGridDao extends BaseDao<ScreenCustomerGridEntity>
* @date 2021/6/10 10:45 上午
*/
List<ScreenProjectGridDailyDTO> selectGridInfoList(@Param("customerId") String customerId, @Param("pids") String pids);
List<ScreenCustomerGridEntity> selectEntityByAgencyId(@Param("customerId") String customerId, @Param("parentAgencyId") String parentAgencyId);
}

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/org/StatsCustomerAgencyDao.java

@ -69,4 +69,6 @@ public interface StatsCustomerAgencyDao extends BaseDao<CustomerAgencyEntity> {
* @return com.epmet.entity.evaluationindex.screen.ScreenCustomerAgencyEntity
*/
CustomerAgencyEntity selectByDeptId(String deptId);
CustomerAgencyEntity selecByAreaCode(@Param("customerId")String customerId, @Param("areaCode")String areaCode);
}

45
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/stats/DataStatsDao.java

@ -0,0 +1,45 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dao.stats;
import com.epmet.dto.stats.form.GmUploadDataFormDTO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @Author sun
* @Description 数据统计服务
*/
@Mapper
public interface DataStatsDao {
/**
* @Description 数据上报--网格员数据分析上报--按客户Id和dateId删除历史数据
* @author sun
*/
int delGmUploadData(String customerId, String dateId);
/**
* @Description 数据上报--网格员数据分析上报--批量新增或修改数据
* @author sun
*/
int saveOrUpGmUploadData(@Param("list") List<GmUploadDataFormDTO.DataList> list);
}

18
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/user/StatsStaffPatrolRecordDailyDao.java

@ -35,7 +35,23 @@ import java.util.List;
@Mapper
public interface StatsStaffPatrolRecordDailyDao extends BaseDao<StatsStaffPatrolRecordDailyEntity> {
/**
* desc: 请描述类的业务用途
*
* @param insertList
* @return java.lang.Integer
* @author LiuJanJun
* @date 2021/7/9 1:57 下午
*/
Integer insertBatch(@Param("list") List<StatsStaffPatrolRecordDailyDTO> insertList);
int delete(StaffPatrolStatsFormDTO formDTO);
/**
* desc: 删除内部数据
*
* @param formDTO
* @return int
* @author LiuJanJun
* @date 2021/7/9 2:03 下午
*/
int deleteInternal(StaffPatrolStatsFormDTO formDTO);
}

13
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/user/UserDao.java

@ -4,6 +4,7 @@ import com.epmet.dto.extract.form.GridHeartedFormDTO;
import com.epmet.dto.extract.form.StaffPatrolStatsFormDTO;
import com.epmet.dto.extract.result.UserPartyResultDTO;
import com.epmet.dto.screen.ScreenProjectDataDTO;
import com.epmet.dto.stats.form.GmUploadEventFormDTO;
import com.epmet.dto.user.result.CommonTotalAndIncCountResultDTO;
import com.epmet.dto.user.result.StaffRoleInfoDTO;
import com.epmet.dto.user.result.CustomerStaffDTO;
@ -180,5 +181,17 @@ public interface UserDao {
List<StatsStaffPatrolRecordDailyDTO> selectLastStaffPatrolList(StaffPatrolStatsFormDTO formDTO);
List<StaffPatrolRecordResult> selectStaffPatrolListByDateId(@Param("customerId") String customerId, @Param("dateId") String dateId);
/**
* @Description 数据上报--网格员事件总数上报--按客户Id和dateId删除历史数据
* @author sun
*/
int delGmUploadEvent(@Param("customerId") String customerId, @Param("dateId") String dateId);
/**
* @Description 数据上报--网格员事件总数上报--批量新增或修改数据
* @author sun
*/
int saveOrUpGmUploadEvent(@Param("list") List<GmUploadEventFormDTO.DataList> list);
}

16
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/evaluationindex/extract/FactGridMemberStatisticsDailyEntity.java

@ -53,11 +53,21 @@ public class FactGridMemberStatisticsDailyEntity extends BaseEpmetEntity {
*/
private String yearId;
/**
* 客户ID
*/
/**
* 来源类型 external:外部internal:内部
*/
private String sourceType;
/**
* 客户Id
*/
private String customerId;
/**
* 数据来源客户Id
*/
private String sourceCustomerId;
/**
* 组织ID
*/

5
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/org/CustomerAgencyEntity.java

@ -108,4 +108,9 @@ public class CustomerAgencyEntity extends BaseEpmetEntity {
* 社区
*/
private String community;
/**
* 是否同步到统计库和指标库,1同步0不同步
*/
private String syncFlag;
}

5
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/org/CustomerGridEntity.java

@ -79,4 +79,9 @@ public class CustomerGridEntity extends BaseEpmetEntity {
* 所有上级组织ID
*/
private String pids;
/**
* 是否同步到统计库和指标库,1同步0不同步
*/
private String syncFlag;
}

16
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/user/StatsStaffPatrolRecordDailyEntity.java

@ -38,11 +38,21 @@ public class StatsStaffPatrolRecordDailyEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 客户Id
*/
/**
* 来源类型 external:外部internal:内部
*/
private String sourceType;
/**
* 客户Id
*/
private String customerId;
/**
* 数据来源客户Id
*/
private String sourceCustomerId;
/**
* 统计日期 关联日期dim表
*/

16
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/StatsUserService.java

@ -1,6 +1,8 @@
package com.epmet.service;
import com.epmet.dto.StatsFormDTO;
import com.epmet.dto.stats.form.GmUploadDataFormDTO;
import com.epmet.dto.stats.form.GmUploadEventFormDTO;
/**
* @author wangc
@ -17,4 +19,18 @@ public interface StatsUserService {
* @date 2020.06.28 14:38
**/
void partition(StatsFormDTO formDTO);
/**
* @Param formDTO
* @Description 数据上报--网格员事件总数上报
* @author sun
*/
void gmUploadEvent(GmUploadEventFormDTO formDTO);
/**
* @Param formDTO
* @Description 数据上报--网格员数据分析上报
* @author sun
*/
void gmUploadData(GmUploadDataFormDTO formDTO);
}

7
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/crm/CustomerService.java

@ -1,5 +1,6 @@
package com.epmet.service.crm;
import com.epmet.dto.crm.CustomerRelationDTO;
import com.epmet.entity.crm.CustomerEntity;
import java.util.Date;
@ -10,4 +11,10 @@ public interface CustomerService {
List<CustomerEntity> listValidCustomersByCreateTime(Date createTimeFrom, Date createTimeTo);
List<CustomerEntity> listValidCustomersByUpdatedTime(Date updatedTime, Date initTime);
/**
* @Description 查询客户所属父客户信息
* @author sun
*/
CustomerRelationDTO getByCustomerId(String customerId);
}

13
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/crm/impl/CustomerServiceImpl.java

@ -3,6 +3,8 @@ package com.epmet.service.crm.impl;
import com.epmet.commons.dynamic.datasource.annotation.DataSource;
import com.epmet.constant.DataSourceConstant;
import com.epmet.dao.crm.CustomerDao;
import com.epmet.dao.crm.CustomerRelationDao;
import com.epmet.dto.crm.CustomerRelationDTO;
import com.epmet.entity.crm.CustomerEntity;
import com.epmet.service.crm.CustomerService;
import org.springframework.beans.factory.annotation.Autowired;
@ -17,6 +19,8 @@ public class CustomerServiceImpl implements CustomerService {
@Autowired
private CustomerDao customerDao;
@Autowired
private CustomerRelationDao customerRelationDao;
@Override
public List<CustomerEntity> listValidCustomersByCreateTime(Date createTimeFrom, Date createTimeTo) {
@ -27,4 +31,13 @@ public class CustomerServiceImpl implements CustomerService {
public List<CustomerEntity> listValidCustomersByUpdatedTime(Date startTime, Date endTime) {
return customerDao.listValidCustomersByUpdateTime(startTime, endTime);
}
/**
* @Description 查询客户所属父客户信息
* @author sun
*/
@Override
public CustomerRelationDTO getByCustomerId(String customerId) {
return customerRelationDao.selectByCustomerId(customerId);
}
}

3
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/biz/impl/BizDataStatsServiceImpl.java

@ -227,6 +227,9 @@ public class BizDataStatsServiceImpl implements BizDataStatsService {
record.setPatrolTotal(NumConstant.ZERO);
record.setLatestPatrolStatus("end");
record.setReportProjectCount(NumConstant.ZERO);
record.setSourceType("internal");
record.setSourceCustomerId(record.getCustomerId());
//最后巡查时间
record.setLatestPatrolTime(null);
if (recordDailyDTO != null) {

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactGridMemberStatisticsDailyServiceImpl.java

@ -293,6 +293,8 @@ public class FactGridMemberStatisticsDailyServiceImpl extends BaseServiceImpl<Fa
entity.setProjectResponseIncr(NumConstant.ZERO);
entity.setProjectTransferCount(NumConstant.ZERO);
entity.setProjectTransferIncr(NumConstant.ZERO);
entity.setSourceType("internal");
entity.setSourceCustomerId(customerId);
return entity;
}

30
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/ScreenCustomerAgencyService.java

@ -17,17 +17,16 @@
package com.epmet.service.evaluationindex.screen;
import com.epmet.dto.CustomerAgencyDTO;
import com.epmet.dto.extract.form.PartyBaseInfoFormDTO;
import com.epmet.dto.extract.form.ScreenPartyBranchDataFormDTO;
import com.epmet.dto.extract.form.ScreenPartyLinkMassesDataFormDTO;
import com.epmet.dto.extract.result.CustomerAgencyInfoResultDTO;
import java.util.List;
import com.epmet.dto.extract.result.OrgNameResultDTO;
import com.epmet.entity.evaluationindex.screen.ScreenCustomerAgencyEntity;
import com.epmet.entity.org.CustomerAgencyEntity;
import java.util.List;
import java.util.Map;
/**
@ -114,4 +113,29 @@ public interface ScreenCustomerAgencyService{
* @date 2021/5/24 9:42 上午
*/
ScreenCustomerAgencyEntity selectTopAgency(String customerId);
/**
* 获取当前客户下的跟组织
*
* @param customerId
* @return com.epmet.entity.evaluationindex.screen.ScreenCustomerAgencyEntity
*/
ScreenCustomerAgencyEntity getRootAgency(String customerId);
List<ScreenCustomerAgencyEntity> getByPid(String customerId, String parentAgencyId);
/**
* 查询出孔村的社区
*
* @param customerId
* @return com.epmet.entity.evaluationindex.screen.ScreenCustomerAgencyEntity
*/
List<ScreenCustomerAgencyEntity> selectKcCommunity(String customerId);
/**
* @Description 查询客户index库组织信息供数据封装使用
* @author sun
*/
List<CustomerAgencyDTO> getByCustomerId(String customerId);
}

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/ScreenCustomerGridService.java

@ -109,4 +109,6 @@ public interface ScreenCustomerGridService extends BaseService<ScreenCustomerGri
List<ScreenProjectGridDailyDTO> selectGridInfoByCustomerId(String customerId);
List<ScreenProjectGridDailyDTO> selectGridInfoList(String customerId, String pids);
List<ScreenCustomerGridEntity> selectEntityByAgencyId(String customerId, String parentAgencyId);
}

36
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenCustomerAgencyServiceImpl.java

@ -25,6 +25,7 @@ import com.epmet.constant.OrgSourceTypeConstant;
import com.epmet.constant.ScreenConstant;
import com.epmet.dao.evaluationindex.screen.ScreenCustomerAgencyDao;
import com.epmet.dao.evaluationindex.screen.ScreenCustomerGridDao;
import com.epmet.dto.CustomerAgencyDTO;
import com.epmet.dto.extract.form.PartyBaseInfoFormDTO;
import com.epmet.dto.extract.form.ScreenPartyBranchDataFormDTO;
import com.epmet.dto.extract.form.ScreenPartyLinkMassesDataFormDTO;
@ -267,5 +268,40 @@ public class ScreenCustomerAgencyServiceImpl implements ScreenCustomerAgencyServ
return screenCustomerAgencyDao.selectTopAgency(customerId);
}
/**
* 获取当前客户下的跟组织
*
* @param customerId
* @return com.epmet.entity.evaluationindex.screen.ScreenCustomerAgencyEntity
*/
@Override
public ScreenCustomerAgencyEntity getRootAgency(String customerId) {
return screenCustomerAgencyDao.selectRootAgency(customerId);
}
@Override
public List<ScreenCustomerAgencyEntity> getByPid(String customerId, String parentAgencyId) {
return screenCustomerAgencyDao.selectByPid(customerId,parentAgencyId);
}
/**
* 查询出孔村的社区
*
* @param customerId
* @return com.epmet.entity.evaluationindex.screen.ScreenCustomerAgencyEntity
*/
@Override
public List<ScreenCustomerAgencyEntity> selectKcCommunity(String customerId) {
return screenCustomerAgencyDao.selectKcCommunity(customerId);
}
/**
* @Description 查询客户index库组织信息供数据封装使用
* @author sun
*/
@Override
public List<CustomerAgencyDTO> getByCustomerId(String customerId) {
return screenCustomerAgencyDao.selectByCustomerId(customerId);
}
}

5
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenCustomerGridServiceImpl.java

@ -210,4 +210,9 @@ public class ScreenCustomerGridServiceImpl extends BaseServiceImpl<ScreenCustome
public List<ScreenProjectGridDailyDTO> selectGridInfoList(String customerId, String pids) {
return baseDao.selectGridInfoList(customerId,pids);
}
@Override
public List<ScreenCustomerGridEntity> selectEntityByAgencyId(String customerId, String parentAgencyId) {
return baseDao.selectEntityByAgencyId(customerId,parentAgencyId);
}
}

159
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsUserServiceImpl.java

@ -3,28 +3,40 @@ package com.epmet.service.impl;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.constant.ProjectConstant;
import com.epmet.dao.stats.DataStatsDao;
import com.epmet.dto.AgencySubTreeDto;
import com.epmet.dto.CustomerAgencyDTO;
import com.epmet.dto.StatsFormDTO;
import com.epmet.dto.crm.CustomerRelationDTO;
import com.epmet.dto.stats.form.GmUploadDataFormDTO;
import com.epmet.dto.stats.form.GmUploadEventFormDTO;
import com.epmet.dto.stats.user.result.UserStatisticalData;
import com.epmet.service.StatsUserService;
import com.epmet.service.crm.CustomerService;
import com.epmet.service.evaluationindex.screen.ScreenCustomerAgencyService;
import com.epmet.service.stats.DimAgencyService;
import com.epmet.service.stats.DimCustomerService;
import com.epmet.service.stats.user.UserStatisticalService;
import com.epmet.service.user.UserService;
import com.epmet.util.DimIdGenerator;
import com.epmet.util.ModuleConstant;
import org.apache.commons.collections4.ListUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.Calendar;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.atomic.AtomicReference;
/**
@ -49,6 +61,13 @@ public class StatsUserServiceImpl implements StatsUserService {
@Autowired
private UserStatisticalService userStatisticalService;
@Autowired
private ScreenCustomerAgencyService screenCustomerAgencyService;
@Autowired
private DataStatsDao dataStatsDao;
@Autowired
private CustomerService customerService;
/**
* @param formDTO 如果目标日期为空则自动计算为T-1天
@ -59,9 +78,9 @@ public class StatsUserServiceImpl implements StatsUserService {
**/
@Override
public void partition(StatsFormDTO formDTO) {
if(StringUtils.isBlank(formDTO.getDate())){
if (StringUtils.isBlank(formDTO.getDate())) {
//如果定时任务没有指定参数,默认数据更新至t-1,包含t-1这一天内的数据
formDTO.setDate(DateUtils.getBeforeNDay(1,DateUtils.DATE_PATTERN));
formDTO.setDate(DateUtils.getBeforeNDay(1, DateUtils.DATE_PATTERN));
}
int pageNo = NumConstant.ONE;
@ -91,15 +110,15 @@ public class StatsUserServiceImpl implements StatsUserService {
}
/**
* @Description 生成用户统计数据
* @param customerId 客户Id
* @param date 目标日期
* @param date 目标日期
* @return
* @Description 生成用户统计数据
* @author wangc
* @date 2020.06.28 14:40
**/
void generate(String customerId,Date date){
log.info("customerId:"+customerId+";date:"+DateUtils.format(date,DateUtils.DATE_TIME_PATTERN));
**/
void generate(String customerId, Date date) {
log.info("customerId:" + customerId + ";date:" + DateUtils.format(date, DateUtils.DATE_TIME_PATTERN));
//1.初始化时间参数
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
@ -111,14 +130,14 @@ public class StatsUserServiceImpl implements StatsUserService {
//2.初始化时间维度{"dateId":"20210325","monthId":"202103","quarterId":"2021Q1","weekId":"2021W13","yearId":"2021"}
DimIdGenerator.DimIdBean timeDimension = DimIdGenerator.getDimIdBean(null == date ? calendar.getTime() : date);
log.info("timeDimension:"+ JSON.toJSONString(timeDimension));
log.info("timeDimension:" + JSON.toJSONString(timeDimension));
//3.初始化机关维度
List<AgencySubTreeDto> agencies = dimAgencyService.getAllAgency(customerId);
List<AgencySubTreeDto> agencies = dimAgencyService.getAllAgency(customerId);
//4.计算机关统计数据、生成唯一性统计数据
try {
UserStatisticalData agencyData = userService.traverseAgencyUser(agencies, date, timeDimension);
userStatisticalService.insertUniquely(agencyData);
}catch(Exception e){
} catch (Exception e) {
log.error(String.format(ProjectConstant.STATS_FAILED_PREFIX, ModuleConstant.EXCEPTION_DING_INTERCEPTOR_PREFIX_AGENCY_USER_STATISTICAL, customerId, new Date().toString(), e.getMessage()));
}
@ -126,8 +145,126 @@ public class StatsUserServiceImpl implements StatsUserService {
try {
UserStatisticalData gridData = userService.traverseGridUser(agencies, date, timeDimension);
userStatisticalService.insertUniquely(gridData);
}catch(Exception e){
} catch (Exception e) {
log.error(String.format(ProjectConstant.STATS_FAILED_PREFIX, ModuleConstant.EXCEPTION_DING_INTERCEPTOR_PREFIX_GRID_USER_STATISTICAL, customerId, new Date().toString(), e.getMessage()));
}
}
/**
* @Param formDTO
* @Description 数据上报--网格员事件总数上报
* @author sun
*/
@Override
public void gmUploadEvent(GmUploadEventFormDTO formDTO) {
//1.数据上报只涉及数据库部分数据,其他数据都是计算出来的,所以不存在删除历史数据,有就更新没有就新增
String customerId = formDTO.getDataList().get(0).getCustomerId();
//2.数据准备
//2-1.查询当前客户index库组织信息供数据封装使用
List<CustomerAgencyDTO> agencyList = screenCustomerAgencyService.getByCustomerId(customerId);
//2-2.查询客户所属父客户信息
CustomerRelationDTO crm = customerService.getByCustomerId(customerId);
if (null == crm) {
throw new RenException(String.format("未查询到子客户所属父客户信息,子客户Id->%s", customerId));
}
//3.分批处理上传数据
List<List<GmUploadEventFormDTO.DataList>> partition = ListUtils.partition(formDTO.getDataList(), NumConstant.ONE_HUNDRED);
for (int i = 0; i < partition.size(); i++) {
List<GmUploadEventFormDTO.DataList> p = partition.get(i);
//4.封装数据并执行
Iterator<GmUploadEventFormDTO.DataList> iterator = p.iterator();
while (iterator.hasNext()) {
GmUploadEventFormDTO.DataList m = iterator.next();
AtomicReference<Boolean> bl = new AtomicReference<>(false);
StringBuffer gridPids = new StringBuffer("");
agencyList.forEach(ag -> {
if (m.getAgencyId().equals(ag.getId())) {
bl.set(true);
gridPids.append((StringUtils.isEmpty(ag.getPids()) || "0".equals(ag.getPids()) ? ag.getId() : ag.getPids().replaceAll(",", ":") + ":" + ag.getId()));
}
});
if (bl.get()) {
m.setSourceType("external");
m.setParentCustomerId(crm.getParentCustomerId());
m.setGridPids(gridPids.toString());
m.setPatrolTotal(NumConstant.ZERO);
m.setTotalTime(NumConstant.ZERO);
m.setLatestPatrolStatus("end");
} else {
log.warn(String.format("网格员事件总数上报,数据错误,根据agencyId未查询到组织信息,客户Id->%s,组织Id->%s", m.getCustomerId(), m.getAgencyId()));
iterator.remove();
}
}
//批量新增或修改数据
if (!CollectionUtils.isEmpty(p)) {
userService.saveOrUpGmUploadEvent(p);
}
}
}
/**
* @Param formDTO
* @Description 数据上报--网格员数据分析上报
* @author sun
*/
@Override
public void gmUploadData(GmUploadDataFormDTO formDTO) {
String customerId = formDTO.getDataList().get(0).getCustomerId();
//1.判断是否批量删除历史数据
if (formDTO.getIsFirst()) {
int deleteNum;
do {
deleteNum = dataStatsDao.delGmUploadData(customerId, formDTO.getDataList().get(0).getDateId());
} while (deleteNum > NumConstant.ZERO);
}
//2.数据准备
//2-1.查询当前客户index库组织信息供数据封装使用
List<CustomerAgencyDTO> agencyList = screenCustomerAgencyService.getByCustomerId(customerId);
//2-2.查询客户所属父客户信息
CustomerRelationDTO crm = customerService.getByCustomerId(customerId);
if (null == crm) {
throw new RenException(String.format("未查询到子客户所属父客户信息,子客户Id->%s", customerId));
}
//3.分批处理上传数据
List<List<GmUploadDataFormDTO.DataList>> partition = ListUtils.partition(formDTO.getDataList(), NumConstant.ONE_HUNDRED);
for (int i = 0; i < partition.size(); i++) {
List<GmUploadDataFormDTO.DataList> p = partition.get(i);
//4.封装数据并执行
Iterator<GmUploadDataFormDTO.DataList> iterator = p.iterator();
while (iterator.hasNext()) {
GmUploadDataFormDTO.DataList m = iterator.next();
AtomicReference<Boolean> bl = new AtomicReference<>(false);
StringBuffer pid = new StringBuffer("");
StringBuffer pids = new StringBuffer("");
agencyList.forEach(ag -> {
if (m.getAgencyId().equals(ag.getId())) {
bl.set(true);
pid.append(ag.getPid());
pids.append((StringUtils.isEmpty(ag.getPids()) || "0".equals(ag.getPids()) ? ag.getId() : ag.getPids().replaceAll(",", ":") + ":" + ag.getId()));
}
});
if (bl.get()) {
m.setSourceType("external");
m.setParentCustomerId(crm.getParentCustomerId());
m.setPid(pid.toString());
m.setPids(pids.toString());
} else {
log.warn(String.format("网格员数据分析上报,数据错误,根据agencyId未查询到组织信息,客户Id->%s,组织Id->%s", m.getCustomerId(), m.getAgencyId()));
iterator.remove();
}
}
//批量新增或修改数据
if (!CollectionUtils.isEmpty(p)) {
dataStatsDao.saveOrUpGmUploadData(p);
}
}
}
}

10
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/CustomerAgencyService.java

@ -48,4 +48,14 @@ public interface CustomerAgencyService {
* @return com.epmet.entity.evaluationindex.screen.ScreenCustomerAgencyEntity
*/
CustomerAgencyEntity getAgencyByDeptId(String deptId);
/**
* 将孔村榆山锦水3个街道的组织插入到gov-org库的customer_agency
*
* @param fromCustomerId
* @param toCustomerId
* @return Result<XxxxDO>
*/
void sysAgencyInfo(String fromCustomerId, String toCustomerId);
}

3
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/CustomerGridService.java

@ -1,5 +1,6 @@
package com.epmet.service.org;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.dto.group.AgencyDTO;
import com.epmet.dto.group.result.AgencyGridTotalCountResultDTO;
import com.epmet.dto.group.result.GridIdListByCustomerResultDTO;
@ -10,7 +11,7 @@ import com.epmet.entity.org.CustomerGridEntity;
import java.util.Date;
import java.util.List;
public interface CustomerGridService {
public interface CustomerGridService extends BaseService<CustomerGridEntity> {
/**
* 根据创建时间截取时间段内的网格
* @param start

168
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/impl/CustomerAgencyServiceImpl.java

@ -1,15 +1,24 @@
package com.epmet.service.org.impl;
import com.epmet.commons.dynamic.datasource.annotation.DataSource;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.constant.DataSourceConstant;
import com.epmet.dao.org.StatsCustomerAgencyDao;
import com.epmet.dto.org.result.CustomerAreaCodeResultDTO;
import com.epmet.dto.org.result.OrgStaffDTO;
import com.epmet.entity.evaluationindex.screen.ScreenCustomerAgencyEntity;
import com.epmet.entity.evaluationindex.screen.ScreenCustomerGridEntity;
import com.epmet.entity.org.CustomerAgencyEntity;
import com.epmet.entity.org.CustomerGridEntity;
import com.epmet.service.evaluationindex.screen.ScreenCustomerAgencyService;
import com.epmet.service.evaluationindex.screen.ScreenCustomerGridService;
import com.epmet.service.org.CustomerAgencyService;
import com.epmet.service.org.CustomerGridService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.Date;
@ -21,6 +30,12 @@ public class CustomerAgencyServiceImpl implements CustomerAgencyService {
@Autowired
private StatsCustomerAgencyDao customerAgencyDao;
@Autowired
private ScreenCustomerAgencyService screenCustomerAgencyService;
@Autowired
private ScreenCustomerGridService screenCustomerGridService;
@Autowired
private CustomerGridService customerGridService;
@Override
public List<CustomerAgencyEntity> listAgenciesByCreateTime(Date statsStartTime, Date statsEndTime) {
@ -103,4 +118,157 @@ public class CustomerAgencyServiceImpl implements CustomerAgencyService {
public CustomerAgencyEntity getAgencyByDeptId(String deptId) {
return customerAgencyDao.selectByDeptId(deptId);
}
/**
* 将孔村榆山锦水3个街道的组织插入到gov-org库的customer_agency
*
* @param fromCustomerId
* @param toCustomerId
* @return Result<XxxxDO>
*/
@Override
public void sysAgencyInfo(String fromCustomerId, String toCustomerId) {
// 1、查询出平阴县组织信息
CustomerAgencyEntity pingYin = customerAgencyDao.selecByAreaCode(toCustomerId, "370124");
// 2、查询出街道
ScreenCustomerAgencyEntity street = screenCustomerAgencyService.getRootAgency(fromCustomerId);
CustomerAgencyEntity insertStreetEntity = new CustomerAgencyEntity();
insertStreetEntity.setCustomerId(pingYin.getCustomerId());
insertStreetEntity.setPid(pingYin.getId());
if(!StringUtils.isEmpty(pingYin.getPids())){
insertStreetEntity.setPids(pingYin.getPids().concat(StrConstant.COLON).concat(pingYin.getId()));
}else{
insertStreetEntity.setPids(pingYin.getId());
}
if(org.apache.commons.lang3.StringUtils.isNotBlank(pingYin.getAllParentName())){
insertStreetEntity.setAllParentName(pingYin.getAllParentName().concat(StrConstant.HYPHEN).concat(pingYin.getOrganizationName()));
}else {
insertStreetEntity.setAllParentName(pingYin.getOrganizationName());
}
insertStreetEntity.setOrganizationName(street.getAgencyName());
insertStreetEntity.setLevel("street");
insertStreetEntity.setAreaCode(street.getAreaCode());
insertStreetEntity.setSyncFlag("0");
insertStreetEntity.setTotalUser(0);
insertStreetEntity.setProvince("山东省");
insertStreetEntity.setCity("济南市");
insertStreetEntity.setDistrict(pingYin.getOrganizationName());
insertStreetEntity.setStreet(street.getAgencyName());
insertStreetEntity.setCommunity(StrConstant.EPMETY_STR);
insertStreetEntity.setParentAreaCode(pingYin.getAreaCode());
insertStreetEntity.setId(street.getAgencyId());
insertStreetEntity.setCreatedBy("APP_USER");
insertStreetEntity.setUpdatedBy("APP_USER");
// 3、插入街道
if (null == customerAgencyDao.selectById(insertStreetEntity.getId())) {
customerAgencyDao.insert(insertStreetEntity);
} else {
customerAgencyDao.updateById(insertStreetEntity);
}
// 3.1、街道的直属网格
this.insertCustomerGrid(street.getCustomerId(),street.getAgencyId(),insertStreetEntity);
if ("2fe0065f70ca0e23ce4c26fca5f1d933".equals(fromCustomerId)) {
List<ScreenCustomerAgencyEntity> kcCommunityList = screenCustomerAgencyService.selectKcCommunity(fromCustomerId);
for(ScreenCustomerAgencyEntity kcCommunity:kcCommunityList){
CustomerAgencyEntity insertCommunityEntity = new CustomerAgencyEntity();
insertCommunityEntity.setCustomerId(pingYin.getCustomerId());
insertCommunityEntity.setPid(insertStreetEntity.getId());
insertCommunityEntity.setPids(insertStreetEntity.getPids().concat(StrConstant.COLON).concat(insertStreetEntity.getId()));
insertCommunityEntity.setAllParentName(insertStreetEntity.getAllParentName().concat(StrConstant.HYPHEN).concat(insertStreetEntity.getOrganizationName()));
insertCommunityEntity.setOrganizationName(kcCommunity.getAgencyName());
insertCommunityEntity.setLevel("community");
insertCommunityEntity.setAreaCode(kcCommunity.getAreaCode());
insertCommunityEntity.setSyncFlag(NumConstant.ZERO_STR);
insertCommunityEntity.setTotalUser(NumConstant.ZERO);
insertCommunityEntity.setProvince("山东省");
insertCommunityEntity.setCity("济南市");
insertCommunityEntity.setDistrict(pingYin.getOrganizationName());
insertCommunityEntity.setStreet(insertStreetEntity.getOrganizationName());
insertCommunityEntity.setCommunity(kcCommunity.getAgencyName());
insertCommunityEntity.setParentAreaCode(insertStreetEntity.getAreaCode());
insertCommunityEntity.setId(kcCommunity.getAgencyId());
insertCommunityEntity.setCreatedBy("APP_USER");
insertCommunityEntity.setUpdatedBy("APP_USER");
CustomerAgencyEntity customerAgencyEntity=customerAgencyDao.selectById(insertCommunityEntity.getId());
if(null==customerAgencyEntity){
// 4、插入社区
customerAgencyDao.insert(insertCommunityEntity);
}else{
customerAgencyDao.updateById(insertCommunityEntity);
}
// 4.1插入社区下的直属网格
this.insertCustomerGrid(kcCommunity.getCustomerId(),kcCommunity.getAgencyId(),insertCommunityEntity);
}
} else {
// 4、查询出社区
List<ScreenCustomerAgencyEntity> communityList = screenCustomerAgencyService.getByPid(fromCustomerId,street.getAgencyId());
for(ScreenCustomerAgencyEntity community:communityList){
CustomerAgencyEntity insertCommunityEntity = new CustomerAgencyEntity();
insertCommunityEntity.setCustomerId(pingYin.getCustomerId());
insertCommunityEntity.setPid(insertStreetEntity.getId());
insertCommunityEntity.setPids(insertStreetEntity.getPids().concat(StrConstant.COLON).concat(insertStreetEntity.getId()));
insertCommunityEntity.setAllParentName(insertStreetEntity.getAllParentName().concat(StrConstant.HYPHEN).concat(insertStreetEntity.getOrganizationName()));
insertCommunityEntity.setOrganizationName(community.getAgencyName());
insertCommunityEntity.setLevel("community");
insertCommunityEntity.setAreaCode(community.getAreaCode());
insertCommunityEntity.setSyncFlag(NumConstant.ZERO_STR);
insertCommunityEntity.setTotalUser(NumConstant.ZERO);
insertCommunityEntity.setProvince("山东省");
insertCommunityEntity.setCity("济南市");
insertCommunityEntity.setDistrict(pingYin.getOrganizationName());
insertCommunityEntity.setStreet(insertStreetEntity.getOrganizationName());
insertCommunityEntity.setCommunity(community.getAgencyName());
insertCommunityEntity.setParentAreaCode(insertStreetEntity.getAreaCode());
insertCommunityEntity.setId(community.getAgencyId());
insertCommunityEntity.setCreatedBy("APP_USER");
insertCommunityEntity.setUpdatedBy("APP_USER");
CustomerAgencyEntity customerAgencyEntity=customerAgencyDao.selectById(insertCommunityEntity.getId());
if(null==customerAgencyEntity){
customerAgencyDao.insert(insertCommunityEntity);
}else{
customerAgencyDao.updateById(insertCommunityEntity);
}
// 4.1插入社区下的直属网格
this.insertCustomerGrid(community.getCustomerId(),community.getAgencyId(),insertCommunityEntity);
}
}
}
/**
* @return void
* @param customerId 孔村榆山锦水的客户id
* @param agencyId 孔村榆山锦水的组织id
* @param parentCustomerEntity 在平阴客户里网格所属组织信息
* @author yinzuomei
* @description 将3个街道的网格插入到gov-org.customer_grid库
* @Date 2021/7/7 9:54
**/
private void insertCustomerGrid(String customerId, String agencyId, CustomerAgencyEntity parentCustomerEntity) {
List<ScreenCustomerGridEntity> gridEntityList = screenCustomerGridService.selectEntityByAgencyId(customerId, agencyId);
for (ScreenCustomerGridEntity gridEntity : gridEntityList) {
CustomerGridEntity insertGrid = new CustomerGridEntity();
insertGrid.setId(gridEntity.getGridId());
insertGrid.setCustomerId(parentCustomerEntity.getCustomerId());
insertGrid.setGridName(gridEntity.getGridName());
insertGrid.setAreaCode(gridEntity.getAreaCode());
insertGrid.setSyncFlag(NumConstant.ZERO_STR);
insertGrid.setManageDistrict(gridEntity.getGridName());
insertGrid.setTotalUser(NumConstant.ZERO);
insertGrid.setPid(gridEntity.getParentAgencyId());
insertGrid.setCreatedBy("APP_USER");
insertGrid.setUpdatedBy("APP_USER");
if(StringUtils.isEmpty(parentCustomerEntity.getPids())){
insertGrid.setPids(insertGrid.getPid());
}else{
insertGrid.setPids(parentCustomerEntity.getPids().concat(StrConstant.COLON).concat(insertGrid.getPid()));
}
if (null == customerGridService.selectById(insertGrid.getId())) {
customerGridService.insert(insertGrid);
} else {
customerGridService.updateById(insertGrid);
}
}
}
}

13
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/impl/CustomerGridServiceImpl.java

@ -1,6 +1,7 @@
package com.epmet.service.org.impl;
import com.epmet.commons.dynamic.datasource.annotation.DataSource;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.constant.DataSourceConstant;
import com.epmet.dao.org.CustomerGridDao;
import com.epmet.dto.group.AgencyDTO;
@ -18,14 +19,14 @@ import java.util.List;
@Service
@DataSource(DataSourceConstant.GOV_ORG)
public class CustomerGridServiceImpl implements CustomerGridService {
public class CustomerGridServiceImpl extends BaseServiceImpl<CustomerGridDao, CustomerGridEntity> implements CustomerGridService {
@Autowired
private CustomerGridDao customerGridDao;
@Override
public List<CustomerGridEntity> listGridsByCreateTime(Date start, Date end) {
return customerGridDao.listGridsByCreateTime(start, end);
return baseDao.listGridsByCreateTime(start, end);
}
/**
@ -35,7 +36,7 @@ public class CustomerGridServiceImpl implements CustomerGridService {
*/
@Override
public List<AgencyGridTotalCountResultDTO> selectAgencyGridTotalCount(List<AgencyDTO> community, String dateId) {
return customerGridDao.selectAgencyGridTotalCount(community,dateId);
return baseDao.selectAgencyGridTotalCount(community,dateId);
}
/**
@ -46,12 +47,12 @@ public class CustomerGridServiceImpl implements CustomerGridService {
*/
@Override
public List<GridIdListByCustomerResultDTO> getCustomerGridIdList(String customerId, String dateId) {
return customerGridDao.getCustomerGridIdList(customerId, dateId);
return baseDao.getCustomerGridIdList(customerId, dateId);
}
@Override
public List<CustomerGridEntity> listUpdatedGridsByUpdateTime(Date lastInitTime, Date now) {
return customerGridDao.listUpdatedGridsByUpdateTime(lastInitTime, now);
return baseDao.listUpdatedGridsByUpdateTime(lastInitTime, now);
}
/**
@ -63,7 +64,7 @@ public class CustomerGridServiceImpl implements CustomerGridService {
**/
@Override
public List<GridInfoDTO> queryGridInfoList(String customerId) {
return customerGridDao.selectListGridInfo(customerId);
return baseDao.selectListGridInfo(customerId);
}
/**

13
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/UserService.java

@ -5,6 +5,7 @@ import com.epmet.dto.extract.form.GridHeartedFormDTO;
import com.epmet.dto.extract.form.StaffPatrolStatsFormDTO;
import com.epmet.dto.org.result.OrgStaffDTO;
import com.epmet.dto.screen.ScreenProjectDataDTO;
import com.epmet.dto.stats.form.GmUploadEventFormDTO;
import com.epmet.dto.stats.user.result.UserStatisticalData;
import com.epmet.dto.user.result.StaffRoleInfoDTO;
import com.epmet.dto.user.result.CustomerStaffDTO;
@ -124,4 +125,16 @@ public interface UserService {
List<StatsStaffPatrolRecordDailyDTO> selectLastStaffPatrolList(StaffPatrolStatsFormDTO formDTO);
List<StaffPatrolRecordResult> selectStaffPatrolListByDateId(String customerId, String yesterdayStr);
/**
* @Description 数据上报--网格员事件总数上报--按客户Id和dateId删除历史数据
* @author sun [接口废弃暂无使用]
*/
int delGmUploadEvent(String customerId, String dateId);
/**
* @Description 数据上报--网格员事件总数上报--批量新增或修改数据
* @author sun
*/
void saveOrUpGmUploadEvent(List<GmUploadEventFormDTO.DataList> list);
}

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/StatsStaffPatrolServiceImpl.java

@ -32,7 +32,7 @@ public class StatsStaffPatrolServiceImpl implements StatsStaffPatrolService {
@Override
public Integer delAndInsertBatch(StaffPatrolStatsFormDTO formDTO, List<StatsStaffPatrolRecordDailyDTO> insertList) {
int delete = statsStaffPatrolRecordDailyDao.delete(formDTO);
int delete = statsStaffPatrolRecordDailyDao.deleteInternal(formDTO);
log.debug("delAndInsertBatch delete:{},param:{}", delete, JSON.toJSONString(formDTO));
return statsStaffPatrolRecordDailyDao.insertBatch(insertList);
}

19
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/UserServiceImpl.java

@ -14,6 +14,7 @@ import com.epmet.dto.extract.form.StaffPatrolStatsFormDTO;
import com.epmet.dto.extract.result.UserPartyResultDTO;
import com.epmet.dto.org.result.OrgStaffDTO;
import com.epmet.dto.screen.ScreenProjectDataDTO;
import com.epmet.dto.stats.form.GmUploadEventFormDTO;
import com.epmet.dto.stats.user.*;
import com.epmet.dto.stats.user.result.UserStatisticalData;
import com.epmet.dto.user.result.CommonTotalAndIncCountResultDTO;
@ -833,4 +834,22 @@ public class UserServiceImpl implements UserService {
return userDao.selectStaffPatrolListByDateId(customerId,yesterdayStr);
}
/**
* @Description 数据上报--网格员事件总数上报--按客户Id和dateId删除历史数据
* @author sun
*/
@Override
public int delGmUploadEvent(String customerId, String dateId) {
return userDao.delGmUploadEvent(customerId, dateId);
}
/**
* @Description 数据上报--网格员事件总数上报--批量新增或修改数据
* @author sun
*/
@Override
public void saveOrUpGmUploadEvent(List<GmUploadEventFormDTO.DataList> list) {
userDao.saveOrUpGmUploadEvent(list);
}
}

6
epmet-module/data-statistical/data-statistical-server/src/main/resources/db/migration/V0.0.21__grid_member_statistics.sql

@ -39,3 +39,9 @@ ALTER TABLE `epmet_data_statistical`.`fact_grid_member_statistics_daily`
ALTER TABLE `epmet_data_statistical`.`fact_origin_project_main_daily`
ADD COLUMN `PROJECT_CREATOR` varchar(32) NULL COMMENT '项目创建人(议题转项目或立项人)' AFTER `IS_SATISFIED`;
#fact_grid_member_statistics_daily 表添加字段
ALTER TABLE `fact_grid_member_statistics_daily`
MODIFY COLUMN `CUSTOMER_ID` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '数据归属客户ID【例:孔村上报数据属于平阴的】' AFTER `YEAR_ID`,
ADD COLUMN `SOURCE_TYPE` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT 'internal' COMMENT '来源类型 external:外部,internal:内部' AFTER `YEAR_ID`,
ADD COLUMN `SOURCE_CUSTOMER_ID` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '数据来源客户Id' AFTER `CUSTOMER_ID`;

11
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/crm/CustomerRelationDao.xml

@ -39,4 +39,15 @@
<select id="selectSubCustomer" resultType="com.epmet.entity.crm.CustomerRelationEntity">
SELECT * FROM customer_relation WHERE DEL_FLAG = 0 AND PARENT_CUSTOMER_ID = #{customerId}
</select>
<select id="selectByCustomerId" resultType="com.epmet.dto.crm.CustomerRelationDTO">
SELECT
*
FROM
customer_relation
WHERE
del_flag = '0'
AND customer_id = #{customerId}
</select>
</mapper>

51
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenCustomerAgencyDao.xml

@ -452,4 +452,55 @@
DEL_FLAG = 0
AND CUSTOMER_ID = #{customerId}
</select>
<select id="selectRootAgency" parameterType="java.lang.String" resultType="com.epmet.entity.evaluationindex.screen.ScreenCustomerAgencyEntity">
SELECT
*
FROM
screen_customer_agency
WHERE
DEL_FLAG = 0
AND CUSTOMER_ID = #{customerId}
and pid='0'
</select>
<select id="selectByPid" parameterType="map" resultType="com.epmet.entity.evaluationindex.screen.ScreenCustomerAgencyEntity">
SELECT
*
FROM
screen_customer_agency
WHERE
DEL_FLAG = 0
AND CUSTOMER_ID = #{customerId}
and pid=#{parentAgencyId}
</select>
<select id="selectKcCommunity" parameterType="java.lang.String" resultType="com.epmet.entity.evaluationindex.screen.ScreenCustomerAgencyEntity">
SELECT
*
FROM
screen_customer_agency
WHERE
DEL_FLAG = 0
AND CUSTOMER_ID = #{customerId}
and level='community'
</select>
<select id="selectByCustomerId" resultType="com.epmet.dto.CustomerAgencyDTO">
SELECT
customer_id,
agency_id as id,
agency_name,
pid,
pids,
all_parent_names,
level,
area_code
FROM
screen_customer_agency
WHERE
del_flag = 0
AND customer_id = #{customerId}
</select>
</mapper>

15
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenCustomerGridDao.xml

@ -386,4 +386,19 @@
AND cg.ALL_PARENT_IDS like concat(#{pids},'%')
</select>
<select id="selectEntityByAgencyId" parameterType="map" resultType="com.epmet.entity.evaluationindex.screen.ScreenCustomerGridEntity">
SELECT
*
FROM
screen_customer_grid scg
WHERE
scg.DEL_FLAG = '0'
<if test="customerId != null and customerId!= ''">
AND scg.CUSTOMER_ID = #{customerId}
</if>
<if test="parentAgencyId != null and parentAgencyId!= ''">
AND scg.PARENT_AGENCY_ID = #{parentAgencyId}
</if>
</select>
</mapper>

4
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/org/CustomerGridDao.xml

@ -9,6 +9,7 @@
FROM customer_grid
<where>
DEL_FLAG = 0
AND SYNC_FLAG='1'
<if test="start != null">
AND CREATED_TIME >= #{start}
</if>
@ -65,7 +66,8 @@
pid,
pids
FROM customer_grid
WHERE UPDATED_TIME >= #{startTime}
WHERE SYNC_FLAG='1'
AND UPDATED_TIME >= #{startTime}
AND UPDATED_TIME <![CDATA[<]]> #{endTime}
</select>

15
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/org/StatsCustomerAgencyDao.xml

@ -16,6 +16,7 @@
FROM customer_agency
<where>
DEL_FLAG = 0
AND SYNC_FLAG='1'
<if test="statsStartTime != null">
AND CREATED_TIME >= #{statsStartTime}
</if>
@ -97,7 +98,8 @@
district,
PARENT_AREA_CODE as parentAreaCode
from customer_agency
where UPDATED_TIME >= #{startTime}
where SYNC_FLAG='1'
AND UPDATED_TIME >= #{startTime}
and UPDATED_TIME <![CDATA[<=]]> #{endTime}
</select>
@ -191,4 +193,15 @@
AND cd.DEL_FLAG = '0'
)
</select>
<select id="selecByAreaCode" parameterType="map" resultType="com.epmet.entity.org.CustomerAgencyEntity">
SELECT
*
FROM
customer_agency ca
WHERE
ca.DEL_FLAG = '0'
AND ca.CUSTOMER_ID = #{customerId}
AND ca.AREA_CODE = #{areaCode}
</select>
</mapper>

108
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/DatsStatsDao.xml

@ -0,0 +1,108 @@
<?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.stats.DataStatsDao">
<delete id="delGmUploadData">
DELETE
FROM
fact_grid_member_statistics_daily
WHERE
source_customer_id = #{customerId}
AND date_id = #{dateId}
LIMIT 1000
</delete>
<insert id="saveOrUpGmUploadData">
INSERT INTO fact_grid_member_statistics_daily
(
id,
date_id,
month_id,
year_id,
source_type,
customer_id,
source_customer_id,
agency_id,
grid_id,
pid,
pids,
staff_id,
staff_name,
project_count,
issue_to_project_count,
closed_issue_count,
project_response_count,
project_transfer_count,
project_closed_count,
project_incr,
issue_to_project_incr,
closed_issue_incr,
project_response_incr,
project_transfer_incr,
project_closed_incr,
del_flag,
revision,
created_by,
created_time,
updated_by,
updated_time
)
VALUES
<foreach collection="list" item="i" separator=",">
(
REPLACE(UUID(), '-', ''),
#{i.dateId},
#{i.monthId},
#{i.yearId},
#{i.sourceType},
#{i.parentCustomerId},
#{i.customerId},
#{i.agencyId},
#{i.gridId},
#{i.pid},
#{i.pids},
#{i.staffId},
#{i.staffName},
#{i.projectCount},
#{i.issueToProjectCount},
#{i.closedIssueCount},
#{i.projectResponseCount},
#{i.projectTransferCount},
#{i.projectClosedCount},
#{i.projectIncr},
#{i.issueToProjectIncr},
#{i.closedIssueIncr},
#{i.projectResponseIncr},
#{i.projectTransferIncr},
#{i.projectClosedIncr},
0,
0,
'BASE_REPORT',
NOW(),
'BASE_REPORT',
NOW()
)
</foreach>
ON DUPLICATE KEY
UPDATE
source_type = values(source_type),
customer_id = values(customer_id),
source_customer_id = values(source_customer_id),
project_count = values(project_count),
issue_to_project_count = values(issue_to_project_count),
closed_issue_count = values(closed_issue_count),
project_response_count = values(project_response_count),
project_transfer_count = values(project_transfer_count),
project_closed_count = values(project_closed_count),
project_incr = values(project_incr),
issue_to_project_incr = values(issue_to_project_incr),
closed_issue_incr = values(closed_issue_incr),
project_response_incr = values(project_response_incr),
project_transfer_incr = values(project_transfer_incr),
project_closed_incr = values(project_closed_incr),
updated_by = 'BASE_REPORT',
updated_time = NOW()
</insert>
</mapper>

11
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/user/StatsStaffPatrolRecordDailyDao.xml

@ -6,7 +6,9 @@
insert into stats_staff_patrol_record_daily
(
ID,
SOURCE_TYPE,
CUSTOMER_ID,
SOURCE_CUSTOMER_ID,
DATE_ID,
WEEK_ID,
MONTH_ID,
@ -31,7 +33,9 @@
<foreach collection="list" item="item" separator=",">
(
(SELECT REPLACE(UUID(), '-', '') AS id),
#{item.sourceType},
#{item.customerId},
#{item.sourceCustomerId},
#{item.dateId},
#{item.weekId},
#{item.monthId},
@ -54,11 +58,16 @@
now()
)
</foreach>
ON DUPLICATE KEY UPDATE
PATROL_TOTAL = values(PATROL_TOTAL),
TOTAL_TIME = values(TOTAL_TIME),
UPDATED_BY = VALUES(UPDATED_BY)
</insert>
<delete id="delete">
<delete id="deleteInternal">
DELETE FROM stats_staff_patrol_record_daily
WHERE CUSTOMER_ID = #{customerId}
AND DATE_ID = #{dateId}
AND SOURCE_TYPE = 'internal'
<if test="gridId != null and gridId != ''">
AND GRID_ID = #{gridId}
</if>

78
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/user/UserDao.xml

@ -626,4 +626,82 @@
r.del_flag = '0' and r.customer_id = #{customerId}
AND DATE_FORMAT( r.ACTRUAL_END_TIME, '%Y%m%d' ) = #{dateId}
</select>
<delete id="delGmUploadEvent">
DELETE
FROM
stats_staff_patrol_record_daily
WHERE
customer_id = #{customerId}
AND date_id = #{dateId}
LIMIT 1000
</delete>
<insert id="saveOrUpGmUploadEvent">
INSERT INTO stats_staff_patrol_record_daily
(
id,
source_type,
customer_id,
source_customer_id,
date_id,
week_id,
month_id,
quarter_id,
year_id,
grid_id,
agency_id,
grid_pids,
staff_id,
patrol_total,
total_time,
report_project_count,
latest_patrol_time,
latest_patrol_status,
del_flag,
revision,
created_by,
created_time,
updated_by,
updated_time
)
VALUES
<foreach collection="list" item="i" separator=",">
(
REPLACE(UUID(), '-', ''),
#{i.sourceType},
#{i.parentCustomerId},
#{i.customerId},
#{i.dateId},
#{i.weekId},
#{i.monthId},
#{i.quarterId},
#{i.yearId},
#{i.gridId},
#{i.agencyId},
#{i.gridPids},
#{i.staffId},
#{i.patrolTotal},
#{i.totalTime},
#{i.reportProjectCount},
#{i.latestPatrolTime},
#{i.latestPatrolStatus},
0,
0,
'BASE_REPORT',
NOW(),
'BASE_REPORT',
NOW()
)
</foreach>
ON DUPLICATE KEY
UPDATE
source_type = values(source_type),
customer_id = values(customer_id),
source_customer_id = values(source_customer_id),
report_project_count = values(report_project_count),
updated_by = 'BASE_REPORT',
updated_time = NOW()
</insert>
</mapper>

2
epmet-module/gov-org/gov-org-server/src/main/resources/db/migration/V0.0.5__add_sync_flag.sql

@ -0,0 +1,2 @@
alter table customer_agency add column SYNC_FLAG VARCHAR(1) not null default '1' comment '当前组织是否同步到统计库和指标库' AFTER AREA_CODE;
alter table customer_grid add column SYNC_FLAG VARCHAR(1) not null default '1' comment '当前网格是否同步到统计库和指标库' AFTER AREA_CODE;

12
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/StatsStaffPatrolRecordDailyDTO.java

@ -38,10 +38,20 @@ public class StatsStaffPatrolRecordDailyDTO implements Serializable {
*/
private String id;
/**
* 来源类型 external:外部internal:内部
*/
private String sourceType;
/**
* 客户Id
*/
private String customerId;
private String customerId;
/**
* 数据来源客户Id
*/
private String sourceCustomerId;
/**
* 统计日期 关联日期dim表

16
epmet-user/epmet-user-server/src/main/java/com/epmet/entity/StatsStaffPatrolRecordDailyEntity.java

@ -38,11 +38,21 @@ public class StatsStaffPatrolRecordDailyEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 客户Id
*/
/**
* 来源类型 external:外部internal:内部
*/
private String sourceType;
/**
* 客户Id
*/
private String customerId;
/**
* 数据来源客户Id
*/
private String sourceCustomerId;
/**
* 统计日期 关联日期dim表
*/

4
epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.16__alter_stats_staff_patrol_record_daily.sql

@ -0,0 +1,4 @@
ALTER TABLE `stats_staff_patrol_record_daily`
ADD COLUMN `SOURCE_TYPE` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT 'internal' COMMENT '来源类型 external:外部,internal:内部' AFTER `ID`,
ADD COLUMN `SOURCE_CUSTOMER_ID` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '数据来源客户Id' AFTER `CUSTOMER_ID`;
Loading…
Cancel
Save