From 880f21c9b45caa5d7460ce316c16d378a58edc12 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Mon, 21 Feb 2022 09:36:46 +0800 Subject: [PATCH 001/115] =?UTF-8?q?sys/dict/data/dictlist=E9=99=90?= =?UTF-8?q?=E5=88=B6sys=5Fdict=5Fdata.del=5Fflag=3D'0'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/SysDictDataDao.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/epmet-admin/epmet-admin-server/src/main/resources/mapper/SysDictDataDao.xml b/epmet-admin/epmet-admin-server/src/main/resources/mapper/SysDictDataDao.xml index ff1273d4ae..d7ea8fa27b 100644 --- a/epmet-admin/epmet-admin-server/src/main/resources/mapper/SysDictDataDao.xml +++ b/epmet-admin/epmet-admin-server/src/main/resources/mapper/SysDictDataDao.xml @@ -14,8 +14,8 @@ FROM sys_dict_data a INNER JOIN sys_dict_type b ON a.dict_type_id = b.id - WHERE - b.dict_type = #{dictType} + WHERE a.del_flag='0' + and b.dict_type = #{dictType} ORDER BY a.sort ASC @@ -27,8 +27,8 @@ FROM sys_dict_data a INNER JOIN sys_dict_type b ON a.dict_type_id = b.id - WHERE - b.dict_type = #{dictType} + WHERE a.del_flag='0' + and b.dict_type = #{dictType} ORDER BY a.sort asc From e247d783039c9a4abb6be59b769359130530bc23 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Mon, 21 Feb 2022 09:48:44 +0800 Subject: [PATCH 002/115] =?UTF-8?q?=E5=88=A0=E9=99=A4=E7=A4=BE=E4=BC=9A?= =?UTF-8?q?=E7=BB=84=E7=BB=87=E5=AD=97=E5=85=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/db/migration/V0.0.11__del_social_org.sql | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 epmet-admin/epmet-admin-server/src/main/resources/db/migration/V0.0.11__del_social_org.sql diff --git a/epmet-admin/epmet-admin-server/src/main/resources/db/migration/V0.0.11__del_social_org.sql b/epmet-admin/epmet-admin-server/src/main/resources/db/migration/V0.0.11__del_social_org.sql new file mode 100644 index 0000000000..ae315be35c --- /dev/null +++ b/epmet-admin/epmet-admin-server/src/main/resources/db/migration/V0.0.11__del_social_org.sql @@ -0,0 +1,7 @@ +UPDATE sys_dict_data +SET DEL_FLAG = '1', +UPDATED_BY = 'yinzuomei', +UPDATED_TIME = NOW(), +remark = '2022.02.21删除社会组织功能,改用联建单位两新组织' +WHERE + dict_value = 'social_org'; \ No newline at end of file From e554f39c5cac88caf00144ecdd2166e32e32e12f Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Mon, 21 Feb 2022 13:41:56 +0800 Subject: [PATCH 003/115] =?UTF-8?q?/gov/org/grid/addgrid=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E7=BD=91=E6=A0=BC=EF=BC=8C=E5=A2=9E=E5=8A=A0=E4=B8=AD=E5=BF=83?= =?UTF-8?q?=E7=82=B9=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/dto/form/AddGridFormDTO.java | 13 +++++++++++++ .../epmet/service/impl/CustomerGridServiceImpl.java | 4 +++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddGridFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddGridFormDTO.java index 965f8b5fc6..cfe4ee00e3 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddGridFormDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddGridFormDTO.java @@ -51,4 +51,17 @@ public class AddGridFormDTO implements Serializable { */ private String mobile; + //02.21新增需求:小程序工作端添加组织增加中心点位置入口,点击进入地图选择点位,可以搜索,中心点为必填 + //该接口为通用接口,后端暂时先不限制必填。由前端控制 + /** + * 中心位置经度 + */ + // @NotBlank(message = "请选择网格中心点位", groups = AddGridFormDTO.AddGrid.class) + private String longitude; + + /** + * 中心位置纬度 + */ + // @NotBlank(message = "请选择网格中心点位", groups = AddGridFormDTO.AddGrid.class) + private String latitude; } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerGridServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerGridServiceImpl.java index 57fc7340fb..d9f604bb7d 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerGridServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerGridServiceImpl.java @@ -272,7 +272,9 @@ public class CustomerGridServiceImpl extends BaseServiceImpl Date: Mon, 21 Feb 2022 13:51:05 +0800 Subject: [PATCH 004/115] =?UTF-8?q?/gov/org/grid/editgrid=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E7=BD=91=E6=A0=BC=EF=BC=8C=E5=A2=9E=E5=8A=A0=E4=B8=AD?= =?UTF-8?q?=E5=BF=83=E7=82=B9=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/dto/form/EditGridFormDTO.java | 13 +++++++++++++ .../epmet/service/impl/CustomerGridServiceImpl.java | 6 ++++++ .../src/main/resources/mapper/CustomerGridDao.xml | 6 ++++++ 3 files changed, 25 insertions(+) diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EditGridFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EditGridFormDTO.java index 1c42608fd8..a10eef56a3 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EditGridFormDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EditGridFormDTO.java @@ -59,4 +59,17 @@ public class EditGridFormDTO implements Serializable { */ private String mobile; + //02.21新增需求:小程序工作端添加组织增加中心点位置入口,点击进入地图选择点位,可以搜索,中心点为必填 + //该接口为通用接口,后端暂时先不限制必填。由前端控制 + /** + * 中心位置经度 + */ + // @NotBlank(message = "请选择网格中心点位", groups = AddGridFormDTO.AddGrid.class) + private String longitude; + + /** + * 中心位置纬度 + */ + // @NotBlank(message = "请选择网格中心点位", groups = AddGridFormDTO.AddGrid.class) + private String latitude; } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerGridServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerGridServiceImpl.java index d9f604bb7d..79559818db 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerGridServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerGridServiceImpl.java @@ -316,6 +316,12 @@ public class CustomerGridServiceImpl extends BaseServiceImpl + LONGITUDE= #{longitude}, + + + LATITUDE= #{latitude}, + UPDATED_TIME=NOW() where id = #{id} From de74af16c57961f01272dc595637e42f9a26405f Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Mon, 21 Feb 2022 14:10:55 +0800 Subject: [PATCH 005/115] =?UTF-8?q?/gov/org/agency/editagency=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E7=BB=84=E7=BB=87=EF=BC=8C=E5=A2=9E=E5=8A=A0=E4=B8=AD?= =?UTF-8?q?=E5=BF=83=E7=82=B9=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/dto/form/EditAgencyFormDTO.java | 14 ++++++++++++++ .../com/epmet/service/impl/AgencyServiceImpl.java | 7 ++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EditAgencyFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EditAgencyFormDTO.java index 7b3ff97ed8..7d7b6c70b5 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EditAgencyFormDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EditAgencyFormDTO.java @@ -89,4 +89,18 @@ public class EditAgencyFormDTO implements Serializable { @NotBlank(message = "组织级别不能为空;社区级:community,乡(镇、街道)级:street,区县级: district,市级: city省级:province", groups = AddAgencyV2FormDTO.AddUserInternalGroup.class) private String level; + + //02.21新增需求:小程序工作端添加组织增加中心点位置入口,点击进入地图选择点位,可以搜索,中心点为必填 + //该接口为通用接口,后端暂时先不限制必填。由前端控制 + /** + * 中心位置经度 + */ + // @NotBlank(message = "请选择网格中心点位", groups = AddGridFormDTO.AddGrid.class) + private String longitude; + + /** + * 中心位置纬度 + */ + // @NotBlank(message = "请选择网格中心点位", groups = AddGridFormDTO.AddGrid.class) + private String latitude; } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java index 535d411b79..5c4e3f6727 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java @@ -158,7 +158,12 @@ public class AgencyServiceImpl implements AgencyService { originalEntity.setCode(formDTO.getCode()); originalEntity.setContacts(formDTO.getContacts()); originalEntity.setMobile(formDTO.getMobile()); - + if(StringUtils.isNotBlank(formDTO.getLatitude())){ + originalEntity.setLatitude(formDTO.getLatitude()); + } + if(StringUtils.isNotBlank(formDTO.getLongitude())){ + originalEntity.setLongitude(formDTO.getLongitude()); + } //当前客户开启了area_code_switch参数:open: 选择地区编码必填;closed: 无需选择地区编码 if (CustomerAgencyConstant.AREA_CODE_SWITCH_OPEN.equals(formDTO.getAreaCodeSwitch())) { CustomerAgencyEntity parent = customerAgencyDao.selectById(originalEntity.getPid()); From 462cbfe6b7e7b9e032d2341c3ce1b742006aeb8a Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Mon, 21 Feb 2022 14:15:19 +0800 Subject: [PATCH 006/115] =?UTF-8?q?/gov/org/agency/addagency-v2=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E7=BB=84=E7=BB=87=EF=BC=8C=E5=A2=9E=E5=8A=A0=E4=B8=AD?= =?UTF-8?q?=E5=BF=83=E7=82=B9=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/dto/form/AddAgencyFormDTO.java | 13 +++++++++++++ .../com/epmet/dto/form/AddAgencyV2FormDTO.java | 14 ++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddAgencyFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddAgencyFormDTO.java index 7a5e6b5537..a535bab867 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddAgencyFormDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddAgencyFormDTO.java @@ -85,4 +85,17 @@ public class AddAgencyFormDTO implements Serializable { @Length(max=30,message = "区县级机关名称不能超过30个字") private String district; + //02.21新增需求:小程序工作端添加组织增加中心点位置入口,点击进入地图选择点位,可以搜索,中心点为必填 + //该接口为通用接口,后端暂时先不限制必填。由前端控制 + /** + * 中心位置经度 + */ + // @NotBlank(message = "请选择网格中心点位", groups = AddGridFormDTO.AddGrid.class) + private String longitude; + + /** + * 中心位置纬度 + */ + // @NotBlank(message = "请选择网格中心点位", groups = AddGridFormDTO.AddGrid.class) + private String latitude; } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddAgencyV2FormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddAgencyV2FormDTO.java index 50ee7a010c..83d904cb07 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddAgencyV2FormDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddAgencyV2FormDTO.java @@ -99,4 +99,18 @@ public class AddAgencyV2FormDTO implements Serializable { * 联系电话 */ private String mobile; + + //02.21新增需求:小程序工作端添加组织增加中心点位置入口,点击进入地图选择点位,可以搜索,中心点为必填 + //该接口为通用接口,后端暂时先不限制必填。由前端控制 + /** + * 中心位置经度 + */ + // @NotBlank(message = "请选择网格中心点位", groups = AddGridFormDTO.AddGrid.class) + private String longitude; + + /** + * 中心位置纬度 + */ + // @NotBlank(message = "请选择网格中心点位", groups = AddGridFormDTO.AddGrid.class) + private String latitude; } From b5d6ec8bd4d130074a7faef82c21658a330cdfe9 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Mon, 21 Feb 2022 14:35:08 +0800 Subject: [PATCH 007/115] =?UTF-8?q?=E7=BB=84=E7=BB=87=E7=BD=91=E6=A0=BC?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0centerAddress=E4=B8=AD=E5=BF=83=E7=82=B9?= =?UTF-8?q?=E4=BD=8D=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/epmet/dto/CustomerGridDTO.java | 5 +++++ .../java/com/epmet/dto/form/AddAgencyFormDTO.java | 5 +++++ .../com/epmet/dto/form/AddAgencyV2FormDTO.java | 5 +++++ .../java/com/epmet/dto/form/AddGridFormDTO.java | 5 +++++ .../com/epmet/dto/form/EditAgencyFormDTO.java | 5 +++++ .../java/com/epmet/dto/form/EditGridFormDTO.java | 5 +++++ .../com/epmet/dto/result/AgencysResultDTO.java | 15 +++++++++++++++ .../com/epmet/dto/result/GridDetailResultDTO.java | 5 +++++ .../com/epmet/entity/CustomerAgencyEntity.java | 5 +++++ .../java/com/epmet/entity/CustomerGridEntity.java | 5 +++++ .../com/epmet/service/impl/AgencyServiceImpl.java | 1 + .../service/impl/CustomerGridServiceImpl.java | 2 ++ .../migration/V0.0.12__addagency_grid_address.sql | 2 ++ .../src/main/resources/mapper/CustomerGridDao.xml | 4 ++++ 14 files changed, 69 insertions(+) create mode 100644 epmet-module/gov-org/gov-org-server/src/main/resources/db/migration/V0.0.12__addagency_grid_address.sql diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/CustomerGridDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/CustomerGridDTO.java index a3600b2e0e..7acfd64627 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/CustomerGridDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/CustomerGridDTO.java @@ -62,6 +62,11 @@ public class CustomerGridDTO implements Serializable { */ private String latitude; + /** + * 中心点位位置 + */ + private String centerAddress; + /** * 所属地区码(所属组织地区码) */ diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddAgencyFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddAgencyFormDTO.java index a535bab867..575a498d57 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddAgencyFormDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddAgencyFormDTO.java @@ -98,4 +98,9 @@ public class AddAgencyFormDTO implements Serializable { */ // @NotBlank(message = "请选择网格中心点位", groups = AddGridFormDTO.AddGrid.class) private String latitude; + + /** + * 中心点位位置 + */ + private String centerAddress; } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddAgencyV2FormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddAgencyV2FormDTO.java index 83d904cb07..0cbb5c1ab5 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddAgencyV2FormDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddAgencyV2FormDTO.java @@ -113,4 +113,9 @@ public class AddAgencyV2FormDTO implements Serializable { */ // @NotBlank(message = "请选择网格中心点位", groups = AddGridFormDTO.AddGrid.class) private String latitude; + + /** + * 中心点位位置 + */ + private String centerAddress; } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddGridFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddGridFormDTO.java index cfe4ee00e3..9eab6ce157 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddGridFormDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddGridFormDTO.java @@ -64,4 +64,9 @@ public class AddGridFormDTO implements Serializable { */ // @NotBlank(message = "请选择网格中心点位", groups = AddGridFormDTO.AddGrid.class) private String latitude; + + /** + * 中心点位位置 + */ + private String centerAddress; } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EditAgencyFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EditAgencyFormDTO.java index 7d7b6c70b5..7473027fde 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EditAgencyFormDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EditAgencyFormDTO.java @@ -103,4 +103,9 @@ public class EditAgencyFormDTO implements Serializable { */ // @NotBlank(message = "请选择网格中心点位", groups = AddGridFormDTO.AddGrid.class) private String latitude; + + /** + * 中心点位位置 + */ + private String centerAddress; } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EditGridFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EditGridFormDTO.java index a10eef56a3..8774da4f99 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EditGridFormDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EditGridFormDTO.java @@ -72,4 +72,9 @@ public class EditGridFormDTO implements Serializable { */ // @NotBlank(message = "请选择网格中心点位", groups = AddGridFormDTO.AddGrid.class) private String latitude; + + /** + * 中心点位位置 + */ + private String centerAddress; } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AgencysResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AgencysResultDTO.java index cace2a4c84..99028d23bb 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AgencysResultDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AgencysResultDTO.java @@ -118,4 +118,19 @@ public class AgencysResultDTO implements Serializable { * 联系电话 */ private String mobile; + + /** + * 中心位置经度 + */ + private String longitude; + + /** + * 中心位置纬度 + */ + private String latitude; + + /** + * 中心点位位置 + */ + private String centerAddress; } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/GridDetailResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/GridDetailResultDTO.java index f9a2726a1a..cae98d8bc4 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/GridDetailResultDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/GridDetailResultDTO.java @@ -35,6 +35,11 @@ public class GridDetailResultDTO implements Serializable { */ private String latitude; + /** + * 中心点位位置 + */ + private String centerAddress; + /** * 所属地区码(所属组织地区码) */ diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/CustomerAgencyEntity.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/CustomerAgencyEntity.java index cde41fbecc..fda8070609 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/CustomerAgencyEntity.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/CustomerAgencyEntity.java @@ -124,6 +124,11 @@ public class CustomerAgencyEntity extends BaseEpmetEntity { */ private String latitude; + /** + * 中心点位位置 + */ + private String centerAddress; + /** * 组织编码 */ diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/CustomerGridEntity.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/CustomerGridEntity.java index 49fe1b4bdb..d6018c2a29 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/CustomerGridEntity.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/CustomerGridEntity.java @@ -55,6 +55,11 @@ public class CustomerGridEntity extends BaseEpmetEntity { */ private String latitude; + /** + * 中心点位位置 + */ + private String centerAddress; + /** * 所属地区码(所属组织地区码) */ diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java index 5c4e3f6727..c20fd83965 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java @@ -164,6 +164,7 @@ public class AgencyServiceImpl implements AgencyService { if(StringUtils.isNotBlank(formDTO.getLongitude())){ originalEntity.setLongitude(formDTO.getLongitude()); } + originalEntity.setCenterAddress(formDTO.getCenterAddress()); //当前客户开启了area_code_switch参数:open: 选择地区编码必填;closed: 无需选择地区编码 if (CustomerAgencyConstant.AREA_CODE_SWITCH_OPEN.equals(formDTO.getAreaCodeSwitch())) { CustomerAgencyEntity parent = customerAgencyDao.selectById(originalEntity.getPid()); diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerGridServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerGridServiceImpl.java index 79559818db..cd0080f548 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerGridServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerGridServiceImpl.java @@ -275,6 +275,7 @@ public class CustomerGridServiceImpl extends BaseServiceImpl LATITUDE= #{latitude}, + + CENTER_ADDRESS= #{centerAddress}, + UPDATED_TIME=NOW() where id = #{id} From 75467a89d8eace950dcadf9ca772c283d05b3e53 Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Mon, 21 Feb 2022 16:32:53 +0800 Subject: [PATCH 008/115] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=201.commons?= =?UTF-8?q?ervice=E4=B8=AD=E5=AF=BC=E5=85=A5=E4=BB=BB=E5=8A=A1=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E7=9A=84=E6=8E=A5=E5=8F=A3=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=EF=BC=9A=201.=E5=B1=85=E6=B0=91=E4=BF=A1=E6=81=AF=E5=AF=BC?= =?UTF-8?q?=E5=85=A5=E4=B8=AD=E8=B0=83=E7=94=A8commonservice=E4=B8=AD?= =?UTF-8?q?=E7=9A=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/constants}/ImportTaskConstants.java | 4 +- .../dto/form/ImportTaskCommonFormDTO.java | 47 +++++++++ .../dto/result/ImportTaskCommonResultDTO.java | 14 +++ .../EpmetCommonServiceOpenFeignClient.java | 18 +++- ...tCommonServiceOpenFeignClientFallback.java | 10 ++ .../controller/ImportTaskController.java | 57 +++++++++++ .../java/com/epmet/dao/ImportTaskDao.java | 0 .../com/epmet/entity/ImportTaskEntity.java | 47 +++++++++ .../com/epmet/service/ImportTaskService.java | 14 +-- .../service/impl/ImportTaskServiceImpl.java | 33 ++++++- .../main/resources/mapper/ImportTaskDao.xml | 0 epmet-user/epmet-user-server/pom.xml | 5 + .../controller/IcResiUserController.java | 24 ++--- .../service/IcResiUserImportService.java | 18 ++++ .../impl/IcResiUserImportServiceImpl.java | 96 +++++++++---------- 15 files changed, 305 insertions(+), 82 deletions(-) rename {epmet-user/epmet-user-client/src/main/java/com/epmet/constant => epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/constants}/ImportTaskConstants.java (89%) create mode 100644 epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/form/ImportTaskCommonFormDTO.java create mode 100644 epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/result/ImportTaskCommonResultDTO.java create mode 100644 epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/ImportTaskController.java rename {epmet-user/epmet-user-server => epmet-module/epmet-common-service/common-service-server}/src/main/java/com/epmet/dao/ImportTaskDao.java (100%) create mode 100644 epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/entity/ImportTaskEntity.java rename {epmet-user/epmet-user-server => epmet-module/epmet-common-service/common-service-server}/src/main/java/com/epmet/service/ImportTaskService.java (69%) rename {epmet-user/epmet-user-server => epmet-module/epmet-common-service/common-service-server}/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java (58%) rename {epmet-user/epmet-user-server => epmet-module/epmet-common-service/common-service-server}/src/main/resources/mapper/ImportTaskDao.xml (100%) diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/constant/ImportTaskConstants.java b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/constants/ImportTaskConstants.java similarity index 89% rename from epmet-user/epmet-user-client/src/main/java/com/epmet/constant/ImportTaskConstants.java rename to epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/constants/ImportTaskConstants.java index 685e80a39a..ed16f5473c 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/constant/ImportTaskConstants.java +++ b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/constants/ImportTaskConstants.java @@ -1,11 +1,11 @@ -package com.epmet.constant; +package com.epmet.constants; /** * 导入任务的业务类型常量 */ public interface ImportTaskConstants { /** - * 居民 + * 业务类型:居民 */ String BIZ_TYPE_RESI = "resi"; diff --git a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/form/ImportTaskCommonFormDTO.java b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/form/ImportTaskCommonFormDTO.java new file mode 100644 index 0000000000..07a6137ca4 --- /dev/null +++ b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/form/ImportTaskCommonFormDTO.java @@ -0,0 +1,47 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +@Data +public class ImportTaskCommonFormDTO { + + public interface Create {} + public interface Finish {} + + /** + * 操作者ID + */ + @NotBlank(message = "操作者ID必填", groups = { Create.class, Finish.class }) + private String operatorId; + + /** + * 业务类型 + */ + @NotBlank(message = "业务类型必填", groups = { Create.class }) + private String bizType; + + /** + * 任务ID + */ + @NotBlank(message = "任务ID必填", groups = { Finish.class }) + private String taskId; + + /** + * 处理状态 + */ + @NotBlank(message = "处理状态必填", groups = { Finish.class }) + private String processStatus; + + /** + * 结果文件 url + */ + private String resultDescFilePath; + + /** + * 结果描述文本 + */ + private String resultDesc; + +} diff --git a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/result/ImportTaskCommonResultDTO.java b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/result/ImportTaskCommonResultDTO.java new file mode 100644 index 0000000000..9fd7c0760c --- /dev/null +++ b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/result/ImportTaskCommonResultDTO.java @@ -0,0 +1,14 @@ +package com.epmet.dto.result; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ImportTaskCommonResultDTO { + + private String taskId; + +} diff --git a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/feign/EpmetCommonServiceOpenFeignClient.java b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/feign/EpmetCommonServiceOpenFeignClient.java index 1fe124a14f..9ddd2d710d 100644 --- a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/feign/EpmetCommonServiceOpenFeignClient.java +++ b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/feign/EpmetCommonServiceOpenFeignClient.java @@ -4,12 +4,12 @@ import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.utils.Result; import com.epmet.dto.form.*; import com.epmet.dto.result.*; -import com.epmet.feign.fallback.EpmetCommonServiceOpenFeignClientFallback; import com.epmet.feign.fallback.EpmetCommonServiceOpenFeignClientFallbackFactory; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; import java.util.List; import java.util.Map; @@ -124,4 +124,20 @@ public interface EpmetCommonServiceOpenFeignClient { **/ @PostMapping(value = "commonservice/areacode/addareacode", consumes = MediaType.APPLICATION_JSON_VALUE) Result addAreaCode(AddAreaCodeFormDTO formDTO); + + /** + * 创建导入任务 + * @param input + * @return + */ + @RequestMapping("/commonservice/import-task/create") + Result createImportTask(@RequestBody ImportTaskCommonFormDTO input); + + /** + * 结束导入任务 + * @param input + * @return + */ + @RequestMapping("/commonservice/import-task/finish") + Result finishImportTask(@RequestBody ImportTaskCommonFormDTO input); } diff --git a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/feign/fallback/EpmetCommonServiceOpenFeignClientFallback.java b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/feign/fallback/EpmetCommonServiceOpenFeignClientFallback.java index 4afee3fa08..c3c62d64da 100644 --- a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/feign/fallback/EpmetCommonServiceOpenFeignClientFallback.java +++ b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/feign/fallback/EpmetCommonServiceOpenFeignClientFallback.java @@ -111,4 +111,14 @@ public class EpmetCommonServiceOpenFeignClientFallback implements EpmetCommonSer public Result addAreaCode(AddAreaCodeFormDTO formDTO) { return ModuleUtils.feignConError(ServiceConstant.EPMET_COMMON_SERVICE, "addAreaCode", formDTO); } + + @Override + public Result createImportTask(ImportTaskCommonFormDTO input) { + return ModuleUtils.feignConError(ServiceConstant.EPMET_COMMON_SERVICE, "createImportTask", input); + } + + @Override + public Result finishImportTask(ImportTaskCommonFormDTO input) { + return ModuleUtils.feignConError(ServiceConstant.EPMET_COMMON_SERVICE, "finishImportTask", input); + } } diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/ImportTaskController.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/ImportTaskController.java new file mode 100644 index 0000000000..d6ce2f4be8 --- /dev/null +++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/ImportTaskController.java @@ -0,0 +1,57 @@ +package com.epmet.controller; + +import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.dto.form.ImportTaskCommonFormDTO; +import com.epmet.dto.result.ImportTaskCommonResultDTO; +import com.epmet.service.ImportTaskService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.HashMap; + +@RestController +@RequestMapping("import-task") +public class ImportTaskController { + + @Autowired + private ImportTaskService importTaskService; + + /** + * 创建导入任务 + * @param input + * @return + */ + @RequestMapping("create") + public Result createTask(@RequestBody ImportTaskCommonFormDTO input) { + ValidatorUtils.validateEntity(input, ImportTaskCommonFormDTO.Create.class); + String operatorId = input.getOperatorId(); + String bizType = input.getBizType(); + + String taskId = importTaskService.createProcessTask(operatorId, bizType); + ImportTaskCommonResultDTO ro = new ImportTaskCommonResultDTO(taskId); + return new Result().ok(ro); + } + + /** + * 结束任务 + * @param input + * @return + */ + @RequestMapping("finish") + public Result finishTask(@RequestBody ImportTaskCommonFormDTO input) { + ValidatorUtils.validateEntity(input, ImportTaskCommonFormDTO.Finish.class); + Boolean finished = importTaskService.finish(input.getTaskId(), input.getProcessStatus(), input.getOperatorId(), input.getResultDescFilePath(), input.getResultDesc()); + if (!finished) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), + "失败,请确认任务是否存在,以及是否已完成", + "失败,请确认任务是否存在,以及是否已完成"); + } + return new Result(); + } + +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/ImportTaskDao.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/dao/ImportTaskDao.java similarity index 100% rename from epmet-user/epmet-user-server/src/main/java/com/epmet/dao/ImportTaskDao.java rename to epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/dao/ImportTaskDao.java diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/entity/ImportTaskEntity.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/entity/ImportTaskEntity.java new file mode 100644 index 0000000000..8473ef1d3a --- /dev/null +++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/entity/ImportTaskEntity.java @@ -0,0 +1,47 @@ +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 2022-02-15 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("import_task") +public class ImportTaskEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * 业务类型。resi:居民;楼栋:building;房屋:house。依次补充 + */ + private String bizType; + + /** + * 处理状态。processing:处理中;finished:完成; + */ + private String processStatus; + + /** + * 谁导入的 + */ + private String operatorId; + + /** + * 开始导入的时间 + */ + private Date startTime; + + private String resultDescFile; + + private String resultDesc; + +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/ImportTaskService.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/ImportTaskService.java similarity index 69% rename from epmet-user/epmet-user-server/src/main/java/com/epmet/service/ImportTaskService.java rename to epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/ImportTaskService.java index 65245abd98..dee9e7984c 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/ImportTaskService.java +++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/ImportTaskService.java @@ -9,13 +9,13 @@ package com.epmet.service; */ public interface ImportTaskService { - /** - * 检查指定类型该用户是否存在处理中的导入任务 - * @param operatorId 操作者ID - * @param bizType 业务类型。resi:居民 - * @return - */ - boolean existsProcessingTask(String operatorId, String bizType); +// /** +// * 检查指定类型该用户是否存在处理中的导入任务 +// * @param operatorId 操作者ID +// * @param bizType 业务类型。resi:居民 +// * @return +// */ +// boolean existsProcessingTask(String operatorId, String bizType); /** * 创建处理任务 diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java similarity index 58% rename from epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java rename to epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java index d80ee5d9a6..987fe3a0ae 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java +++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java @@ -1,7 +1,9 @@ package com.epmet.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.epmet.constant.ImportTaskConstants; +import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.constants.ImportTaskConstants; import com.epmet.dao.ImportTaskDao; import com.epmet.entity.ImportTaskEntity; import com.epmet.service.ImportTaskService; @@ -22,13 +24,28 @@ public class ImportTaskServiceImpl implements ImportTaskService { @Autowired private ImportTaskDao importRecordDao; +// /** +// * 该用户,该业务类型,是否有正在处理的导入任务 +// * @param operatorId 操作者ID +// * @param bizType 业务类型。resi:居民 +// * @return +// */ +// @Override +// public boolean existsProcessingTask(String operatorId, String bizType) { +// LambdaQueryWrapper query = new LambdaQueryWrapper<>(); +// query.eq(ImportTaskEntity::getOperatorId, operatorId); +// query.eq(ImportTaskEntity::getBizType, bizType); +// query.eq(ImportTaskEntity::getProcessStatus, ImportTaskConstants.PROCESS_STATUS_PROCESSING); +// +// return importRecordDao.selectCount(query) > 0; +// } + /** - * 该用户,该业务类型,是否有正在处理的导入任务 - * @param operatorId 操作者ID - * @param bizType 业务类型。resi:居民 + * 检查是否有正在执行的任务 + * @param operatorId + * @param bizType * @return */ - @Override public boolean existsProcessingTask(String operatorId, String bizType) { LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.eq(ImportTaskEntity::getOperatorId, operatorId); @@ -40,6 +57,12 @@ public class ImportTaskServiceImpl implements ImportTaskService { @Override public String createProcessTask(String operatorId, String bizType) { + if (existsProcessingTask(operatorId, bizType)) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), + "已存在执行中的导入任务,请等待执行完成。", + "已存在执行中的导入任务,请等待执行完成。"); + } + ImportTaskEntity importRecord = new ImportTaskEntity(); importRecord.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_PROCESSING); importRecord.setOperatorId(operatorId); diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/ImportTaskDao.xml b/epmet-module/epmet-common-service/common-service-server/src/main/resources/mapper/ImportTaskDao.xml similarity index 100% rename from epmet-user/epmet-user-server/src/main/resources/mapper/ImportTaskDao.xml rename to epmet-module/epmet-common-service/common-service-server/src/main/resources/mapper/ImportTaskDao.xml diff --git a/epmet-user/epmet-user-server/pom.xml b/epmet-user/epmet-user-server/pom.xml index 8d021ca7a8..c84c758120 100644 --- a/epmet-user/epmet-user-server/pom.xml +++ b/epmet-user/epmet-user-server/pom.xml @@ -154,6 +154,11 @@ 2.0.0 compile + + com.epmet + common-service-client + 2.0.0 + diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java index 7624198dfb..defa71958e 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java @@ -33,6 +33,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; @@ -44,19 +45,19 @@ import com.epmet.commons.tools.utils.HttpClientManager; import com.epmet.commons.tools.utils.IpUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; -import com.epmet.constant.ImportTaskConstants; import com.epmet.constant.SystemMessageType; +import com.epmet.constants.ImportTaskConstants; import com.epmet.dto.IcResiUserDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.*; import com.epmet.enums.IcResiUserTableEnum; import com.epmet.excel.support.ExportResiUserItemDTO; +import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.feign.EpmetMessageOpenFeignClient; import com.epmet.feign.OperCustomizeOpenFeignClient; import com.epmet.feign.OssFeignClient; import com.epmet.service.IcResiUserImportService; import com.epmet.service.IcResiUserService; -import com.epmet.service.ImportTaskService; import jodd.io.FileUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FileUtils; @@ -93,7 +94,7 @@ import java.util.stream.Collectors; @Slf4j @RestController @RequestMapping("icresiuser") -public class IcResiUserController { +public class IcResiUserController implements ResultDataResolver { /** * 居民上传临时目录 @@ -123,9 +124,6 @@ public class IcResiUserController { private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient; @Autowired private LoginUserUtil loginUserUtil; - @Autowired - private ImportTaskService importTaskService; - /** * 模板枚举 @@ -443,14 +441,9 @@ public class IcResiUserController { String importTaskId; // 记录导入任务 - if (importTaskService.existsProcessingTask(operatorId, ImportTaskConstants.BIZ_TYPE_RESI)) { - throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), - "已存在执行中的导入任务,请等待执行完成。", - "已存在执行中的导入任务,请等待执行完成。"); - } else { - importTaskId = importTaskService.createProcessTask(operatorId, ImportTaskConstants.BIZ_TYPE_RESI); - } + importTaskId = icResiUserImportService.createImportTaskRecord(operatorId, ImportTaskConstants.BIZ_TYPE_RESI); + // 开始执行导入 Path savePath = null; try { String fileName = UUID.randomUUID().toString().concat(".").concat(extension); @@ -464,9 +457,8 @@ public class IcResiUserController { String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e); log.error("【导入居民信息失败】导入失败:{}", errorMsg); - // 要将导入任务状态设置为结束但不成功 - importTaskService.finish(importTaskId, ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL, operatorId, null, e.getMessage()); - throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode()); + // 要将导入任务状态设置为结束但不成功。不报错即成功,没有返回值 TODO 此处要改,将oss返回的路径存储到resultDescPath中 + icResiUserImportService.finishImportTask(importTaskId, operatorId, ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL, null, null); } finally { try { if (savePath != null){ diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserImportService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserImportService.java index 35748c9ddc..8cdd76d3ab 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserImportService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserImportService.java @@ -13,4 +13,22 @@ import java.util.List; public interface IcResiUserImportService { void importIcResiInfoFromExcel(String importTaskId, List formItemList, String excelPathName, HttpServletResponse response); + + /** + * 创建导入任务 + * @param operatorId + * @param bizType + * @return + */ + String createImportTaskRecord(String operatorId, String bizType); + + /** + * 完成导入任务 + * @param importTaskId 任务ID + * @param operatorId 操作者ID + * @param processStatus 处理状态,见 ImportTaskConstants.PROCESS_STATUS_* + * @param resultDesc 结果描述,非必填 + * @param resultDescPath 结果描述文件,excel等文件,有错误的话需要传入,成功则不需要 + */ + void finishImportTask(String importTaskId, String operatorId, String processStatus, String resultDesc, String resultDescPath); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java index 18cd3cd6ec..981db445f2 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java @@ -24,7 +24,7 @@ import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.security.user.LoginUserUtil; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.Result; -import com.epmet.constant.ImportTaskConstants; +import com.epmet.constants.ImportTaskConstants; import com.epmet.dao.IcResiUserDao; import com.epmet.dao.IcUserChangeDetailedDao; import com.epmet.dao.IcUserChangeRecordDao; @@ -38,10 +38,7 @@ import com.epmet.entity.IcUserChangeRecordEntity; import com.epmet.entity.IcUserTransferRecordEntity; import com.epmet.enums.IcResiUserTableEnum; import com.epmet.excel.handler.IcResiImportDynamicExcelListener; -import com.epmet.feign.EpmetAdminOpenFeignClient; -import com.epmet.feign.EpmetUserOpenFeignClient; -import com.epmet.feign.GovOrgOpenFeignClient; -import com.epmet.feign.OperCustomizeOpenFeignClient; +import com.epmet.feign.*; import com.epmet.service.*; import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; @@ -127,8 +124,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res private RedisUtils redisUtils; @Autowired - private ImportTaskService importTaskService; - + private EpmetCommonServiceOpenFeignClient commonServiceOpenFeignClient; /** * 字表中不需要的列 @@ -291,11 +287,9 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res // 更新上传记录 if (hasErrorRows) { - importTaskService.finish(importTaskId, ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL, loginUserId, - null, null); + finishImportTask(importTaskId, loginUserId, ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL,null, null); } else { - importTaskService.finish(importTaskId, ImportTaskConstants.PROCESS_STATUS_FINISHED_SUCCESS, loginUserId, - null, null); + finishImportTask(importTaskId, loginUserId, ImportTaskConstants.PROCESS_STATUS_FINISHED_SUCCESS,null, null); } } catch (Exception e) { @@ -1755,45 +1749,45 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res return recordEntity; } + /** + * 创建导入任务 + * @param operatorId + * @param bizType + * @return + */ + public String createImportTaskRecord(String operatorId, String bizType) { + ImportTaskCommonFormDTO importTaskForm = new ImportTaskCommonFormDTO(); + importTaskForm.setOperatorId(operatorId); + importTaskForm.setBizType(bizType); + ImportTaskCommonResultDTO resultDTO = getResultDataOrThrowsException(commonServiceOpenFeignClient.createImportTask(importTaskForm), + ServiceConstant.EPMET_COMMON_SERVICE, + EpmetErrorCode.SERVER_ERROR.getCode(), + "【居民信息导入】创建导入任务记录失败", + "【居民信息导入】创建导入任务记录失败"); + + return resultDTO.getTaskId(); + } - - - //private IcUserTransferRecordEntity fillTransferRecord(String resiId, String resiName, String operatorId, String operatorName, String oldCustomerId, - // String oldAgencyId, String oldAgencyName, String oldGridId, String oldGridName, String neighborhoodId, - // String neighborhoodName, String oldBuildingId, String oldBuildingName, ) { - - //IcUserTransferRecordEntity recordEntity = new IcUserTransferRecordEntity(); - //recordEntity.setIcUserId(); - //recordEntity.setOperatorId(); - //recordEntity.setIcUserName(); - //recordEntity.setOperatorName(); - //recordEntity.setOldCustomerId(); - //recordEntity.setOldAgencyId(); - //recordEntity.setOldAgencyName(); - //recordEntity.setOldGridId(); - //recordEntity.setOldGridName(); - //recordEntity.setOldNeighborHoodId(); - //recordEntity.setOldNeighborHoodName(); - //recordEntity.setOldBuildingId(); - //recordEntity.setOldBuildingName(); - //recordEntity.setOldBuildingUnitId(); - //recordEntity.setOldBuildingUnitName(); - //recordEntity.setOldHouseId(); - //recordEntity.setOldHouseName(); - //recordEntity.setTransferTime(); - //recordEntity.setRemark(); - //recordEntity.setNewCustomerId(); - //recordEntity.setNewAgencyId(); - //recordEntity.setNewAgencyName(); - //recordEntity.setNewGridId(); - //recordEntity.setNewGridName(); - //recordEntity.setNewNeighborHoodId(); - //recordEntity.setNewNeighborHoodName(); - //recordEntity.setNewBuildingId(); - //recordEntity.setNewBuildingName(); - //recordEntity.setNewBuildingUnitId(); - //recordEntity.setNewBuildingUnitName(); - //recordEntity.setNewHouseId(); - //recordEntity.setNewHouseName(); - //} + /** + * 完成导入任务 + * @param importTaskId 任务ID + * @param operatorId 操作者ID + * @param processStatus 处理状态,见 ImportTaskConstants.PROCESS_STATUS_* + * @param resultDesc 结果描述,非必填 + * @param resultDescPath 结果描述文件,excel等文件,有错误的话需要传入,成功则不需要 + */ + public void finishImportTask(String importTaskId, String operatorId, String processStatus, String resultDesc, String resultDescPath) { + ImportTaskCommonFormDTO importFinishTaskForm = new ImportTaskCommonFormDTO(); + importFinishTaskForm.setTaskId(importTaskId); + importFinishTaskForm.setProcessStatus(processStatus); + importFinishTaskForm.setOperatorId(operatorId); + importFinishTaskForm.setResultDesc(resultDesc); + importFinishTaskForm.setResultDescFilePath(resultDescPath); + + Result result = commonServiceOpenFeignClient.finishImportTask(importFinishTaskForm); + if (result == null || !result.success()) { + log.error("【居民信息导入】结束导入任务失败:taskId:{}, processStatus:{}, operatorId:{}, resultDesc:{}, resultDescPath:{}", + importTaskId, processStatus, operatorId, resultDesc, resultDescPath); + } + } } From 3d13549a8a34aebeb4c446699cf8df222f2d0907 Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Mon, 21 Feb 2022 16:46:46 +0800 Subject: [PATCH 009/115] errInfos --- .../constant/ImportErrorMsgConstants.java | 12 ++++++++ .../epmet/model/BuildingErrorInfoModel.java | 23 ++++++++++++++ .../com/epmet/model/HouseErrorInfoModel.java | 30 +++++++++++++++++++ .../model/ImportBuildingInfoListener.java | 19 ++++++++++++ .../epmet/model/ImportHouseInfoListener.java | 27 ++++++++++++++--- .../model/ImportNeighborHoodInfoListener.java | 17 +++++++++++ .../model/NeighborHoodErrorInfoModel.java | 20 +++++++++++++ 7 files changed, 144 insertions(+), 4 deletions(-) create mode 100644 epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/constant/ImportErrorMsgConstants.java create mode 100644 epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/BuildingErrorInfoModel.java create mode 100644 epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseErrorInfoModel.java create mode 100644 epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/NeighborHoodErrorInfoModel.java diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/constant/ImportErrorMsgConstants.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/constant/ImportErrorMsgConstants.java new file mode 100644 index 0000000000..d49715e330 --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/constant/ImportErrorMsgConstants.java @@ -0,0 +1,12 @@ +package com.epmet.constant; + +/** + * @Author zxc + * @DateTime 2022/2/21 4:25 下午 + * @DESC + */ +public interface ImportErrorMsgConstants { + + + +} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/BuildingErrorInfoModel.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/BuildingErrorInfoModel.java new file mode 100644 index 0000000000..e7db295a7e --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/BuildingErrorInfoModel.java @@ -0,0 +1,23 @@ +package com.epmet.model; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +/** + * @Author zxc + * @DateTime 2022/2/15 10:07 上午 + * @DESC + */ +@Data +public class BuildingErrorInfoModel { + + @ExcelProperty(value = "小区名称") + private String neighborHoodName; + + @ExcelProperty(value = "楼栋名称") + private String buildingName; + + @ExcelProperty(value = "错误信息") + private String errorMsg; + +} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseErrorInfoModel.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseErrorInfoModel.java new file mode 100644 index 0000000000..9cb84948c5 --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseErrorInfoModel.java @@ -0,0 +1,30 @@ +package com.epmet.model; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; + +/** + * @Author zxc + * @DateTime 2022/2/13 1:26 下午 + * @DESC + */ +@Data +public class HouseErrorInfoModel { + + @ExcelProperty(value = "所属小区") + private String neighborHoodName; + + @ExcelProperty(value = "所属楼栋") + private String buildingName; + + @ExcelProperty(value = "单元号") + private Integer buildingUnit; + + @ExcelProperty(value = "门牌号") + private String doorName; + + @ExcelProperty(value = "错误信息") + private String errorMsg; + +} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java index 808a69f810..63e5f39000 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java @@ -34,6 +34,8 @@ public class ImportBuildingInfoListener extends AnalysisEventListener nums = new ArrayList<>(); Integer num = NumConstant.ZERO; + List errorInfos = new ArrayList<>(); + BuildingInfoModel info = null; List needDisposeList = new ArrayList<>(); List needInsertList = new ArrayList<>(); @@ -67,6 +69,7 @@ public class ImportBuildingInfoListener extends AnalysisEventListener { nums.add(e.getNum()); + disposeErrorMsg(info,""); }); } } @@ -157,6 +163,7 @@ public class ImportBuildingInfoListener extends AnalysisEventListener nums = new ArrayList<>(); Integer num = NumConstant.ZERO; + List errorInfos = new ArrayList<>(); + HouseInfoModel info = null; List needDisposeList = new ArrayList<>(); List needInsertList = new ArrayList<>(); @@ -73,6 +75,7 @@ public class ImportHouseInfoListener extends AnalysisEventListener importInfo = neighborHoodService.getImportInfo(formDTO, needDisposeList); @@ -132,10 +144,8 @@ public class ImportHouseInfoListener extends AnalysisEventListener nums = new ArrayList<>(); Integer num = NumConstant.ZERO; + List errorInfos = new ArrayList<>(); + NeighborHoodInfoModel info = null; List needDisposeList = new ArrayList<>(); List needInsertList = new ArrayList<>(); @@ -70,9 +72,11 @@ public class ImportNeighborHoodInfoListener extends AnalysisEventListener { nums.add(e.getNum()); + disposeErrorMsg(info,""); }); } List notExistList = groupByBuildingExistStatus.get(false); @@ -172,6 +178,7 @@ public class ImportNeighborHoodInfoListener extends AnalysisEventListener Date: Mon, 21 Feb 2022 16:57:08 +0800 Subject: [PATCH 010/115] =?UTF-8?q?=E5=B8=B8=E9=87=8F=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/epmet/constants/ImportTaskConstants.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/constants/ImportTaskConstants.java b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/constants/ImportTaskConstants.java index ed16f5473c..c67ddbb549 100644 --- a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/constants/ImportTaskConstants.java +++ b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/constants/ImportTaskConstants.java @@ -8,6 +8,9 @@ public interface ImportTaskConstants { * 业务类型:居民 */ String BIZ_TYPE_RESI = "resi"; + String BIZ_TYPE_NEIGHBOR_HOOD = "neighborHood"; + String BIZ_TYPE_BUILDING = "building"; + String BIZ_TYPE_HOUSE = "house"; /** * 处理状态:处理中 From 2888475ff76a847a26b988e95ba5e53df2df7fe1 Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Mon, 21 Feb 2022 17:54:52 +0800 Subject: [PATCH 011/115] =?UTF-8?q?=E8=81=94=E5=BB=BA=E6=B4=BB=E5=8A=A8?= =?UTF-8?q?=E5=85=B3=E8=81=94=E5=A4=9A=E4=B8=AA=E5=8D=95=E4=BD=8D=E5=92=8C?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E4=BA=8B=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/IcActivityServiceRelationDTO.java | 85 ++++++++ .../epmet/dto/IcActivityUnitRelationDTO.java | 89 ++++++++ .../com/epmet/dto/IcPartyActivityDTO.java | 31 ++- .../dto/LatestActServiceRelationDTO.java | 79 +++++++ .../epmet/dto/LatestActUnitRelationDTO.java | 84 ++++++++ .../dao/IcActivityServiceRelationDao.java | 25 +++ .../epmet/dao/IcActivityUnitRelationDao.java | 25 +++ .../com/epmet/dao/IcPartyActivityDao.java | 15 +- .../dao/LatestActServiceRelationDao.java | 25 +++ .../epmet/dao/LatestActUnitRelationDao.java | 25 +++ .../IcActivityServiceRelationEntity.java | 56 +++++ .../entity/IcActivityUnitRelationEntity.java | 56 +++++ .../LatestActServiceRelationEntity.java | 51 +++++ .../entity/LatestActUnitRelationEntity.java | 51 +++++ .../IcActivityServiceRelationService.java | 34 +++ .../IcActivityUnitRelationService.java | 34 +++ .../LatestActServiceRelationService.java | 14 ++ .../service/LatestActUnitRelationService.java | 14 ++ .../IcActivityServiceRelationServiceImpl.java | 61 ++++++ .../IcActivityUnitRelationServiceImpl.java | 60 ++++++ .../impl/IcPartyActivityServiceImpl.java | 199 ++++++++++++------ .../LatestActServiceRelationServiceImpl.java | 33 +++ .../LatestActUnitRelationServiceImpl.java | 19 ++ .../mapper/IcActivityServiceRelationDao.xml | 26 +++ .../mapper/IcActivityUnitRelationDao.xml | 26 +++ .../resources/mapper/IcPartyActivityDao.xml | 128 ++++++++++- .../mapper/LatestActServiceRelationDao.xml | 24 +++ .../mapper/LatestActUnitRelationDao.xml | 24 +++ 28 files changed, 1312 insertions(+), 81 deletions(-) create mode 100644 epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcActivityServiceRelationDTO.java create mode 100644 epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcActivityUnitRelationDTO.java create mode 100644 epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/LatestActServiceRelationDTO.java create mode 100644 epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/LatestActUnitRelationDTO.java create mode 100644 epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcActivityServiceRelationDao.java create mode 100644 epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcActivityUnitRelationDao.java create mode 100644 epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/LatestActServiceRelationDao.java create mode 100644 epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/LatestActUnitRelationDao.java create mode 100644 epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/IcActivityServiceRelationEntity.java create mode 100644 epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/IcActivityUnitRelationEntity.java create mode 100644 epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/LatestActServiceRelationEntity.java create mode 100644 epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/LatestActUnitRelationEntity.java create mode 100644 epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcActivityServiceRelationService.java create mode 100644 epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcActivityUnitRelationService.java create mode 100644 epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/LatestActServiceRelationService.java create mode 100644 epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/LatestActUnitRelationService.java create mode 100644 epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcActivityServiceRelationServiceImpl.java create mode 100644 epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcActivityUnitRelationServiceImpl.java create mode 100644 epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/LatestActServiceRelationServiceImpl.java create mode 100644 epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/LatestActUnitRelationServiceImpl.java create mode 100644 epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcActivityServiceRelationDao.xml create mode 100644 epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcActivityUnitRelationDao.xml create mode 100644 epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/LatestActServiceRelationDao.xml create mode 100644 epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/LatestActUnitRelationDao.xml diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcActivityServiceRelationDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcActivityServiceRelationDTO.java new file mode 100644 index 0000000000..c5f7f33641 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcActivityServiceRelationDTO.java @@ -0,0 +1,85 @@ +package com.epmet.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +/** + * 联建活动与服务事项关联表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-02-21 + */ +@Data +public class IcActivityServiceRelationDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + private String id; + + /** + * 客户id + */ + private String customerId; + + /** + * 组织ID + */ + private String agencyId; + + /** + * 组织的所有上级 + */ + private String pids; + + /** + * 活动ID + */ + private String activityId; + + /** + * act_info表ID + */ + private String actId; + + /** + * 服务事项 + */ + private String serviceMatter; + + /** + * 删除标识 0未删除、1已删除 + */ + private String delFlag; + + /** + * 乐观锁 + */ + private Integer revision; + + /** + * 创建人 + */ + private String createdBy; + + /** + * 创建时间 + */ + private Date createdTime; + + /** + * 更新人 + */ + private String updatedBy; + + /** + * 更新时间 + */ + private Date updatedTime; + +} \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcActivityUnitRelationDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcActivityUnitRelationDTO.java new file mode 100644 index 0000000000..8af5942af0 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcActivityUnitRelationDTO.java @@ -0,0 +1,89 @@ +package com.epmet.dto; + +import java.io.Serializable; +import java.util.Date; +import lombok.Data; + + +/** + * 联建活动与单位关联表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-02-21 + */ +@Data +public class IcActivityUnitRelationDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + private String id; + + /** + * 客户id + */ + private String customerId; + + /** + * 组织ID + */ + private String agencyId; + + /** + * 组织的所有上级 + */ + private String pids; + + /** + * 活动ID + */ + private String activityId; + + /** + * act_info表ID + */ + private String actId; + + /** + * 单位ID + */ + private String unitId; + + /** + * 服务事项 + */ + private String serviceMatter; + + /** + * 删除标识 0未删除、1已删除 + */ + private String delFlag; + + /** + * 乐观锁 + */ + private Integer revision; + + /** + * 创建人 + */ + private String createdBy; + + /** + * 创建时间 + */ + private Date createdTime; + + /** + * 更新人 + */ + private String updatedBy; + + /** + * 更新时间 + */ + private Date updatedTime; + +} \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcPartyActivityDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcPartyActivityDTO.java index 81edd97c20..07ec52a21f 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcPartyActivityDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcPartyActivityDTO.java @@ -19,12 +19,15 @@ package com.epmet.dto; import com.epmet.commons.tools.validator.group.AddGroup; import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; import java.io.Serializable; import java.util.Date; +import java.util.List; /** @@ -46,35 +49,45 @@ public class IcPartyActivityDTO implements Serializable { /** * 客户id */ + @JsonIgnore private String customerId; /** * 组织ID */ + @JsonIgnore + @NotEmpty(message = "组织ID不能为空",groups = AddGroup.class) private String agencyId; /** * 组织的所有上级 */ + @JsonIgnore private String pids; /** * act_info表ID */ + @JsonIgnore private String actId; + private String unitId; + private String unitName; /** * 单位ID */ - @NotBlank(message = "单位不能为空",groups = AddGroup.class) - private String unitId; - private String unitName; + @NotEmpty(message = "单位不能为空",groups = AddGroup.class) + private List unitIdList; + private List unitNameList; + + private String serviceMatter; + private String serviceMatterName; /** * 服务事项 */ - @NotBlank(message = "服务事项不能为空",groups = AddGroup.class) - private String serviceMatter; - private String serviceMatterName; + @NotEmpty(message = "服务事项不能为空",groups = AddGroup.class) + private List serviceMatterList; + private List serviceMatterNameList; /** * 活动标题 */ @@ -131,31 +144,37 @@ public class IcPartyActivityDTO implements Serializable { /** * 删除标识 0未删除、1已删除 */ + @JsonIgnore private String delFlag; /** * 乐观锁 */ + @JsonIgnore private Integer revision; /** * 创建人 */ + @JsonIgnore private String createdBy; /** * 创建时间 */ + @JsonIgnore private Date createdTime; /** * 更新人 */ + @JsonIgnore private String updatedBy; /** * 更新时间 */ + @JsonIgnore private Date updatedTime; } \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/LatestActServiceRelationDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/LatestActServiceRelationDTO.java new file mode 100644 index 0000000000..b25b10f432 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/LatestActServiceRelationDTO.java @@ -0,0 +1,79 @@ +package com.epmet.dto; + +import java.io.Serializable; +import java.util.Date; +import lombok.Data; + + +/** + * 联建活动与服务事项关联表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-02-21 + */ +@Data +public class LatestActServiceRelationDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + private String id; + + /** + * 客户id + */ + private String customerId; + + /** + * 组织ID + */ + private String agencyId; + + /** + * 组织的所有上级 + */ + private String pids; + + /** + * latest_act_info表ID + */ + private String actId; + + /** + * 服务事项 + */ + private String serviceMatter; + + /** + * 删除标识 0未删除、1已删除 + */ + private String delFlag; + + /** + * 乐观锁 + */ + private Integer revision; + + /** + * 创建人 + */ + private String createdBy; + + /** + * 创建时间 + */ + private Date createdTime; + + /** + * 更新人 + */ + private String updatedBy; + + /** + * 更新时间 + */ + private Date updatedTime; + +} \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/LatestActUnitRelationDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/LatestActUnitRelationDTO.java new file mode 100644 index 0000000000..534053660d --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/LatestActUnitRelationDTO.java @@ -0,0 +1,84 @@ +package com.epmet.dto; + +import java.io.Serializable; +import java.util.Date; +import lombok.Data; + + +/** + * 联建活动与单位关联表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-02-21 + */ +@Data +public class LatestActUnitRelationDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + private String id; + + /** + * 客户id + */ + private String customerId; + + /** + * 组织ID + */ + private String agencyId; + + /** + * 组织的所有上级 + */ + private String pids; + + /** + * latest_act_info表ID + */ + private String actId; + + /** + * 单位ID + */ + private String unitId; + + /** + * 服务事项 + */ + private String serviceMatter; + + /** + * 删除标识 0未删除、1已删除 + */ + private String delFlag; + + /** + * 乐观锁 + */ + private Integer revision; + + /** + * 创建人 + */ + private String createdBy; + + /** + * 创建时间 + */ + private Date createdTime; + + /** + * 更新人 + */ + private String updatedBy; + + /** + * 更新时间 + */ + private Date updatedTime; + +} \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcActivityServiceRelationDao.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcActivityServiceRelationDao.java new file mode 100644 index 0000000000..46cfe4eb3e --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcActivityServiceRelationDao.java @@ -0,0 +1,25 @@ +package com.epmet.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.entity.IcActivityServiceRelationEntity; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * 联建活动与服务事项关联表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-02-21 + */ +@Mapper +public interface IcActivityServiceRelationDao extends BaseDao { + /** + * 删除活动所属服务 + * + * @Param activityId + * @Return + * @Author zhaoqifeng + * @Date 2022/2/21 16:19 + */ + void deleteByActivity(@Param("activityId") String activityId); +} \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcActivityUnitRelationDao.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcActivityUnitRelationDao.java new file mode 100644 index 0000000000..be27ce119b --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcActivityUnitRelationDao.java @@ -0,0 +1,25 @@ +package com.epmet.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.entity.IcActivityUnitRelationEntity; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * 联建活动与单位关联表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-02-21 + */ +@Mapper +public interface IcActivityUnitRelationDao extends BaseDao { + /** + * 删除活动所属单位 + * + * @Param activityId + * @Return + * @Author zhaoqifeng + * @Date 2022/2/21 16:19 + */ + void deleteByActivity(@Param("activityId") String activityId); +} \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcPartyActivityDao.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcPartyActivityDao.java index bb7e41c2ed..c8fba2ffed 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcPartyActivityDao.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcPartyActivityDao.java @@ -23,6 +23,8 @@ import com.epmet.dto.result.ActivityStatisticsDTO; import com.epmet.entity.IcPartyActivityEntity; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** * 联建活动 * @@ -40,5 +42,16 @@ public interface IcPartyActivityDao extends BaseDao { * @Date 2021/12/9 16:06 */ ActivityStatisticsDTO getStatistics(PartyActivityFormDTO formDTO); - + + /** + * 活动列表查询 + * @Param formDTO + * @Return {@link java.util.List} + * @Author zhaoqifeng + * @Date 2022/2/21 14:50 + */ + List selectActivityList(PartyActivityFormDTO formDTO); + + + List getActivityList(PartyActivityFormDTO formDTO); } \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/LatestActServiceRelationDao.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/LatestActServiceRelationDao.java new file mode 100644 index 0000000000..6a46bf5031 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/LatestActServiceRelationDao.java @@ -0,0 +1,25 @@ +package com.epmet.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.entity.LatestActServiceRelationEntity; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * 联建活动与服务事项关联表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-02-21 + */ +@Mapper +public interface LatestActServiceRelationDao extends BaseDao { + /** + * 删除活动所属服务 + * + * @Param activityId + * @Return + * @Author zhaoqifeng + * @Date 2022/2/21 16:19 + */ + void deleteByActivity(@Param("activityId") String activityId); +} \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/LatestActUnitRelationDao.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/LatestActUnitRelationDao.java new file mode 100644 index 0000000000..19e8d48e57 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/LatestActUnitRelationDao.java @@ -0,0 +1,25 @@ +package com.epmet.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.entity.LatestActUnitRelationEntity; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * 联建活动与单位关联表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-02-21 + */ +@Mapper +public interface LatestActUnitRelationDao extends BaseDao { + /** + * 删除活动所属服务 + * + * @Param activityId + * @Return + * @Author zhaoqifeng + * @Date 2022/2/21 16:19 + */ + void deleteByActivity(@Param("activityId") String activityId); +} \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/IcActivityServiceRelationEntity.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/IcActivityServiceRelationEntity.java new file mode 100644 index 0000000000..31790b660f --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/IcActivityServiceRelationEntity.java @@ -0,0 +1,56 @@ +package com.epmet.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.epmet.commons.mybatis.entity.BaseEpmetEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 联建活动与服务事项关联表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-02-21 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("ic_activity_service_relation") +public class IcActivityServiceRelationEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * 客户id + */ + private String customerId; + + /** + * 组织ID + */ + private String agencyId; + + /** + * 组织的所有上级 + */ + private String pids; + + /** + * 活动ID + */ + private String activityId; + + /** + * act_info表ID + */ + private String actId; + + /** + * 服务事项 + */ + private String serviceMatter; + + /** + * 排序 + */ + private Integer sort; + +} diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/IcActivityUnitRelationEntity.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/IcActivityUnitRelationEntity.java new file mode 100644 index 0000000000..d7983ff41c --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/IcActivityUnitRelationEntity.java @@ -0,0 +1,56 @@ +package com.epmet.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.epmet.commons.mybatis.entity.BaseEpmetEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 联建活动与单位关联表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-02-21 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("ic_activity_unit_relation") +public class IcActivityUnitRelationEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * 客户id + */ + private String customerId; + + /** + * 组织ID + */ + private String agencyId; + + /** + * 组织的所有上级 + */ + private String pids; + + /** + * 活动ID + */ + private String activityId; + + /** + * act_info表ID + */ + private String actId; + + /** + * 单位ID + */ + private String unitId; + + /** + * 排序 + */ + private Integer sort; + +} diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/LatestActServiceRelationEntity.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/LatestActServiceRelationEntity.java new file mode 100644 index 0000000000..a7d81ad2c1 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/LatestActServiceRelationEntity.java @@ -0,0 +1,51 @@ +package com.epmet.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.epmet.commons.mybatis.entity.BaseEpmetEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 联建活动与服务事项关联表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-02-21 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("latest_act_service_relation") +public class LatestActServiceRelationEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * 客户id + */ + private String customerId; + + /** + * 组织ID + */ + private String agencyId; + + /** + * 组织的所有上级 + */ + private String pids; + + /** + * latest_act_info表ID + */ + private String actId; + + /** + * 服务事项 + */ + private String serviceMatter; + + /** + * 排序 + */ + private Integer sort; + +} diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/LatestActUnitRelationEntity.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/LatestActUnitRelationEntity.java new file mode 100644 index 0000000000..4940c49cd3 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/LatestActUnitRelationEntity.java @@ -0,0 +1,51 @@ +package com.epmet.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.epmet.commons.mybatis.entity.BaseEpmetEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 联建活动与单位关联表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-02-21 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("latest_act_unit_relation") +public class LatestActUnitRelationEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * 客户id + */ + private String customerId; + + /** + * 组织ID + */ + private String agencyId; + + /** + * 组织的所有上级 + */ + private String pids; + + /** + * latest_act_info表ID + */ + private String actId; + + /** + * 单位ID + */ + private String unitId; + + /** + * 排序 + */ + private Integer sort; + +} diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcActivityServiceRelationService.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcActivityServiceRelationService.java new file mode 100644 index 0000000000..b2cd111205 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcActivityServiceRelationService.java @@ -0,0 +1,34 @@ +package com.epmet.service; + +import com.epmet.commons.mybatis.service.BaseService; +import com.epmet.entity.IcActivityServiceRelationEntity; + +import java.util.List; + +/** + * 联建活动与服务事项关联表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-02-21 + */ +public interface IcActivityServiceRelationService extends BaseService { + /** + * 获取活动所属服务事项 + * + * @Param activityId 活动ID + * @Return {@link List } + * @Author zhaoqifeng + * @Date 2022/2/21 14:36 + */ + List getServiceList(String activityId); + + /** + * 删除活动所属服务事项 + * + * @Param activityId + * @Return + * @Author zhaoqifeng + * @Date 2022/2/21 16:10 + */ + void deleteByActivity(String activityId); +} \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcActivityUnitRelationService.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcActivityUnitRelationService.java new file mode 100644 index 0000000000..41e51a1c31 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcActivityUnitRelationService.java @@ -0,0 +1,34 @@ +package com.epmet.service; + +import com.epmet.commons.mybatis.service.BaseService; +import com.epmet.entity.IcActivityUnitRelationEntity; + +import java.util.List; + +/** + * 联建活动与单位关联表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-02-21 + */ +public interface IcActivityUnitRelationService extends BaseService { + /** + * 获取活动所属党建单位 + * + * @Param activityId 活动ID + * @Return {@link List} + * @Author zhaoqifeng + * @Date 2022/2/21 14:36 + */ + List getUnitList(String activityId); + + /** + * 删除活动所属单位 + * + * @Param activityId + * @Return + * @Author zhaoqifeng + * @Date 2022/2/21 16:10 + */ + void deleteByActivity(String activityId); +} \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/LatestActServiceRelationService.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/LatestActServiceRelationService.java new file mode 100644 index 0000000000..e400a6d1ab --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/LatestActServiceRelationService.java @@ -0,0 +1,14 @@ +package com.epmet.service; + +import com.epmet.commons.mybatis.service.BaseService; +import com.epmet.entity.LatestActServiceRelationEntity; + +/** + * 联建活动与服务事项关联表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-02-21 + */ +public interface LatestActServiceRelationService extends BaseService { + +} \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/LatestActUnitRelationService.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/LatestActUnitRelationService.java new file mode 100644 index 0000000000..5da8fb584b --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/LatestActUnitRelationService.java @@ -0,0 +1,14 @@ +package com.epmet.service; + +import com.epmet.commons.mybatis.service.BaseService; +import com.epmet.entity.LatestActUnitRelationEntity; + +/** + * 联建活动与单位关联表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-02-21 + */ +public interface LatestActUnitRelationService extends BaseService { + +} \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcActivityServiceRelationServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcActivityServiceRelationServiceImpl.java new file mode 100644 index 0000000000..d52ec53145 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcActivityServiceRelationServiceImpl.java @@ -0,0 +1,61 @@ +package com.epmet.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; +import com.epmet.dao.IcActivityServiceRelationDao; +import com.epmet.entity.IcActivityServiceRelationEntity; +import com.epmet.service.IcActivityServiceRelationService; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 联建活动与服务事项关联表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-02-21 + */ +@Service +public class IcActivityServiceRelationServiceImpl extends BaseServiceImpl implements IcActivityServiceRelationService { + + + /** + * 获取活动所属服务事项 + * + * @param activityId + * @Param activityId 活动ID + * @Return {@link List } + * @Author zhaoqifeng + * @Date 2022/2/21 14:36 + */ + @Override + public List getServiceList(String activityId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(IcActivityServiceRelationEntity::getActivityId, activityId); + wrapper.orderByAsc(IcActivityServiceRelationEntity::getSort); + List list = baseDao.selectList(wrapper); + if (CollectionUtils.isEmpty(list)) { + return Collections.emptyList(); + } + return list.stream().map(IcActivityServiceRelationEntity::getServiceMatter).collect(Collectors.toList()); + } + + /** + * 删除活动所属服务事项 + * + * @param activityId + * @Param activityId + * @Return + * @Author zhaoqifeng + * @Date 2022/2/21 16:10 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteByActivity(String activityId) { + baseDao.deleteByActivity(activityId); + } +} \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcActivityUnitRelationServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcActivityUnitRelationServiceImpl.java new file mode 100644 index 0000000000..eca268f436 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcActivityUnitRelationServiceImpl.java @@ -0,0 +1,60 @@ +package com.epmet.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; +import com.epmet.dao.IcActivityUnitRelationDao; +import com.epmet.entity.IcActivityUnitRelationEntity; +import com.epmet.service.IcActivityUnitRelationService; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 联建活动与单位关联表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-02-21 + */ +@Service +public class IcActivityUnitRelationServiceImpl extends BaseServiceImpl implements IcActivityUnitRelationService { + + /** + * 获取活动所属党建单位 + * + * @param activityId + * @Param activityId 活动ID + * @Return {@link List } + * @Author zhaoqifeng + * @Date 2022/2/21 14:36 + */ + @Override + public List getUnitList(String activityId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(IcActivityUnitRelationEntity::getActivityId, activityId); + wrapper.orderByAsc(IcActivityUnitRelationEntity::getSort); + List list = baseDao.selectList(wrapper); + if (CollectionUtils.isEmpty(list)) { + return Collections.emptyList(); + } + return list.stream().map(IcActivityUnitRelationEntity::getUnitId).collect(Collectors.toList()); + } + + /** + * 删除活动所属单位 + * + * @param activityId + * @Param activityId + * @Return + * @Author zhaoqifeng + * @Date 2022/2/21 16:10 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteByActivity(String activityId) { + baseDao.deleteByActivity(activityId); + } +} \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyActivityServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyActivityServiceImpl.java index 4cea3f9136..d275504fb4 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyActivityServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyActivityServiceImpl.java @@ -19,10 +19,9 @@ package com.epmet.service.impl; import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; -import com.epmet.commons.tools.constant.FieldConstant; 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.exception.EpmetErrorCode; import com.epmet.commons.tools.page.PageData; @@ -38,11 +37,11 @@ import com.epmet.dto.IcPartyUnitDTO; import com.epmet.dto.form.PartyActivityFormDTO; import com.epmet.dto.result.ActivityStatisticsDTO; import com.epmet.dto.result.demand.OptionDTO; +import com.epmet.entity.IcActivityServiceRelationEntity; +import com.epmet.entity.IcActivityUnitRelationEntity; import com.epmet.entity.IcPartyActivityEntity; import com.epmet.excel.IcPartyActivityImportExcel; -import com.epmet.service.IcPartyActivityService; -import com.epmet.service.IcPartyUnitService; -import com.epmet.service.IcServiceItemDictService; +import com.epmet.service.*; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; @@ -56,6 +55,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; /** @@ -72,6 +72,11 @@ public class IcPartyActivityServiceImpl extends BaseServiceImpl wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(IcPartyActivityEntity::getAgencyId, formDTO.getAgencyId()); - wrapper.eq(StringUtils.isNotBlank(formDTO.getUnitId()), IcPartyActivityEntity::getUnitId, formDTO.getUnitId()); - wrapper.eq(StringUtils.isNotBlank(formDTO.getServiceMatter()), IcPartyActivityEntity::getServiceMatter, formDTO.getServiceMatter()); - wrapper.like(StringUtils.isNotBlank(formDTO.getTitle()), IcPartyActivityEntity::getTitle, formDTO.getTitle()); - wrapper.between(IcPartyActivityEntity::getActivityTime, formDTO.getStartTime(), formDTO.getEndTime()); - wrapper.orderByDesc(IcPartyActivityEntity::getUpdatedTime); - List list = baseDao.selectList(wrapper); + List list = baseDao.selectActivityList(formDTO); PageInfo pageInfo = new PageInfo<>(list); List dtoList = ConvertUtils.sourceToTarget(list, IcPartyActivityDTO.class); - IcPartyUnitDTO unitDTO = new IcPartyUnitDTO(); - unitDTO.setAgencyId(formDTO.getAgencyId()); if (CollectionUtils.isNotEmpty(dtoList)) { + //获取组织下联建单位 + IcPartyUnitDTO unitDTO = new IcPartyUnitDTO(); + unitDTO.setAgencyId(formDTO.getAgencyId()); Map option = icPartyUnitService.option(unitDTO).stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel)); dtoList.forEach(dto -> { - dto.setUnitName(option.get(dto.getUnitId())); + //联建单位ID与单位名匹配 + List unitIds = Arrays.asList(dto.getUnitId().split(StrConstant.COMMA)); + List unitNames = unitIds.stream().map(option::get).collect(Collectors.toList()); + dto.setUnitName(StringUtils.join(unitNames, StrConstant.COMMA)); }); } @@ -118,54 +120,49 @@ public class IcPartyActivityServiceImpl extends BaseServiceImpl wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(IcPartyActivityEntity::getAgencyId, formDTO.getAgencyId()); - wrapper.eq(StringUtils.isNotBlank(formDTO.getUnitId()), IcPartyActivityEntity::getUnitId, formDTO.getUnitId()); - wrapper.eq(StringUtils.isNotBlank(formDTO.getServiceMatter()), IcPartyActivityEntity::getServiceMatter, formDTO.getServiceMatter()); - wrapper.like(StringUtils.isNotBlank(formDTO.getTitle()), IcPartyActivityEntity::getTitle, formDTO.getTitle()); - wrapper.between(IcPartyActivityEntity::getActivityTime, formDTO.getStartTime(), formDTO.getEndTime()); - wrapper.orderByDesc(IcPartyActivityEntity::getUpdatedTime); - List list = baseDao.selectList(wrapper); + List list = baseDao.selectActivityList(formDTO); List dtoList = ConvertUtils.sourceToTarget(list, IcPartyActivityDTO.class); - IcPartyUnitDTO unitDTO = new IcPartyUnitDTO(); - unitDTO.setAgencyId(formDTO.getAgencyId()); if (CollectionUtils.isNotEmpty(dtoList)) { + IcPartyUnitDTO unitDTO = new IcPartyUnitDTO(); + unitDTO.setAgencyId(formDTO.getAgencyId()); Map option = icPartyUnitService.option(unitDTO).stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel)); dtoList.forEach(dto -> { - dto.setUnitName(option.get(dto.getUnitId())); + List unitIds = Arrays.asList(dto.getUnitId().split(StrConstant.COMMA)); + List unitNames = unitIds.stream().map(option::get).collect(Collectors.toList()); + dto.setUnitName(StringUtils.join(unitNames, StrConstant.COMMA)); }); } return dtoList; } - private QueryWrapper getWrapper(Map params){ - String id = (String)params.get(FieldConstant.ID_HUMP); - - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); - - return wrapper; - } - @Override public IcPartyActivityDTO get(String id) { IcPartyActivityEntity entity = baseDao.selectById(id); if (null == entity) { return null; } - //获取服务事项名称 + IcPartyActivityDTO dto = ConvertUtils.sourceToTarget(entity, IcPartyActivityDTO.class); + + //获取服务事项 List serviceItemList=icServiceItemDictService.queryDictList(entity.getCustomerId()); Map categoryMap=serviceItemList.stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel)); + List services = icActivityServiceRelationService.getServiceList(id); + List serviceNames = services.stream().map(categoryMap::get).collect(Collectors.toList()); + dto.setServiceMatterList(services); + dto.setServiceMatterNameList(serviceNames); + + //获取单位 + //获取组织下联建单位 + IcPartyUnitDTO unitDTO = new IcPartyUnitDTO(); + unitDTO.setAgencyId(entity.getAgencyId()); + Map option = icPartyUnitService.option(unitDTO).stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel)); + List unitIds = icActivityUnitRelationService.getUnitList(id); + List unitNames = unitIds.stream().map(option::get).collect(Collectors.toList()); + dto.setUnitIdList(unitIds); + dto.setUnitNameList(unitNames); - IcPartyActivityDTO dto = ConvertUtils.sourceToTarget(entity, IcPartyActivityDTO.class); - dto.setServiceMatterName(categoryMap.get(dto.getServiceMatter())); - //获取单位名称 - IcPartyUnitDTO unitDTO = icPartyUnitService.get(dto.getUnitId()); - if (null != unitDTO) { - dto.setUnitName(unitDTO.getUnitName()); - } return dto; } @@ -182,6 +179,35 @@ public class IcPartyActivityServiceImpl extends BaseServiceImpl unitRelationList = dto.getUnitIdList().stream().map(unitId -> { + IcActivityUnitRelationEntity relation = new IcActivityUnitRelationEntity(); + relation.setCustomerId(entity.getCustomerId()); + relation.setAgencyId(entity.getAgencyId()); + relation.setPids(entity.getPids()); + relation.setActivityId(entity.getId()); + relation.setUnitId(unitId); + relation.setSort(i.getAndIncrement()); + return relation; + }).collect(Collectors.toList()); + icActivityUnitRelationService.insertBatch(unitRelationList); + + //保存活动与服务关系 + icActivityServiceRelationService.deleteByActivity(entity.getId()); + AtomicInteger j = new AtomicInteger(NumConstant.ONE); + List serviceRelationList = dto.getServiceMatterList().stream().map(service -> { + IcActivityServiceRelationEntity relation = new IcActivityServiceRelationEntity(); + relation.setCustomerId(entity.getCustomerId()); + relation.setAgencyId(entity.getAgencyId()); + relation.setPids(entity.getPids()); + relation.setActivityId(entity.getId()); + relation.setServiceMatter(service); + relation.setSort(j.getAndIncrement()); + return relation; + }).collect(Collectors.toList()); + icActivityServiceRelationService.insertBatch(serviceRelationList); } @Override @@ -237,20 +263,31 @@ public class IcPartyActivityServiceImpl extends BaseServiceImpl%s", obj.getRowNum())); iterator.remove(); - } else if (null == option.get(obj.getUnitName())){ - numList.add(obj.getRowNum()); - log.warn(String.format("单位名称不存在,行号->%s", obj.getRowNum())); - iterator.remove(); + } else { + List unitList = Arrays.asList(obj.getUnitName().split(StrConstant.COMMA)); + unitList.forEach(unit -> { + if (null == option.get(unit)) { + numList.add(obj.getRowNum()); + log.warn(String.format("单位名称不存在,行号->%s", obj.getRowNum())); + iterator.remove(); + } + }); } //服务事项校验 if (StringUtils.isBlank(obj.getServiceMatter())) { numList.add(obj.getRowNum()); log.warn(String.format("服务事项为空,行号->%s", obj.getRowNum())); iterator.remove(); - } else if (null == categoryMap.get(obj.getServiceMatter())){ - numList.add(obj.getRowNum()); - log.warn(String.format("服务事项不存在,行号->%s", obj.getRowNum())); - iterator.remove(); + } else { + List serviceList = Arrays.asList(obj.getServiceMatter().split(StrConstant.SEMICOLON)); + serviceList.forEach(service -> { + if (null == categoryMap.get(service)) { + numList.add(obj.getRowNum()); + log.warn(String.format("服务事项不存在,行号->%s", obj.getRowNum())); + iterator.remove(); + } + }); + } //活动标题 活动目标 活动内容 活动时间 活动地址 活动地址经度 活动地址纬度 活动结果 if(StringUtils.isBlank(obj.getTitle()) || StringUtils.isBlank(obj.getTarget()) || @@ -271,7 +308,7 @@ public class IcPartyActivityServiceImpl extends BaseServiceImpl list = result.stream().map(item -> { + result.forEach(item -> { IcPartyActivityEntity entity = new IcPartyActivityEntity(); entity.setCustomerId(tokenDto.getCustomerId()); entity.setAgencyId(staffInfoCache.getAgencyId()); @@ -279,18 +316,44 @@ public class IcPartyActivityServiceImpl extends BaseServiceImpl unitRelationList = Arrays.stream(item.getUnitName().split(StrConstant.COMMA)).map(unit -> { + IcActivityUnitRelationEntity relation = new IcActivityUnitRelationEntity(); + relation.setCustomerId(entity.getCustomerId()); + relation.setAgencyId(entity.getAgencyId()); + relation.setPids(entity.getPids()); + relation.setActivityId(entity.getId()); + relation.setUnitId(option.get(unit)); + relation.setSort(i.getAndIncrement()); + return relation; + }).collect(Collectors.toList()); + icActivityUnitRelationService.insertBatch(unitRelationList); + + //保存活动与服务关系 + icActivityServiceRelationService.deleteByActivity(entity.getId()); + AtomicInteger j = new AtomicInteger(NumConstant.ONE); + List serviceRelationList = Arrays.stream(item.getServiceMatter().split(StrConstant.SEMICOLON)).map(service -> { + IcActivityServiceRelationEntity relation = new IcActivityServiceRelationEntity(); + relation.setCustomerId(entity.getCustomerId()); + relation.setAgencyId(entity.getAgencyId()); + relation.setPids(entity.getPids()); + relation.setActivityId(entity.getId()); + relation.setServiceMatter(categoryMap.get(service)); + relation.setSort(j.getAndIncrement()); + return relation; + }).collect(Collectors.toList()); + icActivityServiceRelationService.insertBatch(serviceRelationList); + }); String str = String.format("共%s条,成功导入%s条。", numList.size() + result.size(), numList.size() + result.size() - numList.size()); if (numList.size() > NumConstant.ZERO) { @@ -347,14 +410,7 @@ public class IcPartyActivityServiceImpl extends BaseServiceImpl wrapper = new LambdaQueryWrapper<>(); - wrapper.and(wp -> wp.eq(IcPartyActivityEntity::getAgencyId, formDTO.getAgencyId()).or(). - like(IcPartyActivityEntity::getPids, formDTO.getAgencyId())); - wrapper.eq(StringUtils.isNotBlank(formDTO.getServiceMatter()), IcPartyActivityEntity::getServiceMatter, formDTO.getServiceMatter()); - wrapper.ge(null != formDTO.getStartTime(),IcPartyActivityEntity::getActivityTime, formDTO.getStartTime()); - wrapper.le(null != formDTO.getEndTime(), IcPartyActivityEntity::getActivityTime, formDTO.getEndTime()); - wrapper.orderByDesc(IcPartyActivityEntity::getActivityTime); - List list = baseDao.selectList(wrapper); + List list = baseDao.getActivityList(formDTO); List dtoList = ConvertUtils.sourceToTarget(list, IcPartyActivityDTO.class); IcPartyUnitDTO unitDTO = new IcPartyUnitDTO(); @@ -367,8 +423,15 @@ public class IcPartyActivityServiceImpl extends BaseServiceImpl categoryMap=serviceItemList.stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel)); //数据组装 dtoList.forEach(dto -> { - dto.setServiceMatterName(categoryMap.get(dto.getServiceMatter())); - dto.setUnitName(option.get(dto.getUnitId())); + //联建单位ID与单位名匹配 + List unitIds = Arrays.asList(dto.getUnitId().split(StrConstant.COMMA)); + List unitNames = unitIds.stream().map(option::get).collect(Collectors.toList()); + dto.setUnitName(StringUtils.join(unitNames, StrConstant.COMMA)); + + //服务事项与服务事项名匹配 + List services = Arrays.asList(dto.getServiceMatter().split(StrConstant.COMMA)); + List serviceNames = services.stream().map(categoryMap::get).collect(Collectors.toList()); + dto.setServiceMatterName(StringUtils.join(serviceNames, StrConstant.SEMICOLON)); }); } PageInfo pageInfo = new PageInfo<>(dtoList); diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/LatestActServiceRelationServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/LatestActServiceRelationServiceImpl.java new file mode 100644 index 0000000000..f94e54a486 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/LatestActServiceRelationServiceImpl.java @@ -0,0 +1,33 @@ +package com.epmet.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; +import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.constant.FieldConstant; +import com.epmet.dao.LatestActServiceRelationDao; +import com.epmet.dto.LatestActServiceRelationDTO; +import com.epmet.entity.LatestActServiceRelationEntity; +import com.epmet.redis.LatestActServiceRelationRedis; +import com.epmet.service.LatestActServiceRelationService; +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.Arrays; +import java.util.List; +import java.util.Map; + +/** + * 联建活动与服务事项关联表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-02-21 + */ +@Service +public class LatestActServiceRelationServiceImpl extends BaseServiceImpl implements LatestActServiceRelationService { + + +} \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/LatestActUnitRelationServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/LatestActUnitRelationServiceImpl.java new file mode 100644 index 0000000000..aee966d2ea --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/LatestActUnitRelationServiceImpl.java @@ -0,0 +1,19 @@ +package com.epmet.service.impl; + +import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; +import com.epmet.dao.LatestActUnitRelationDao; +import com.epmet.entity.LatestActUnitRelationEntity; +import com.epmet.service.LatestActUnitRelationService; +import org.springframework.stereotype.Service; + +/** + * 联建活动与单位关联表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-02-21 + */ +@Service +public class LatestActUnitRelationServiceImpl extends BaseServiceImpl implements LatestActUnitRelationService { + + +} \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcActivityServiceRelationDao.xml b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcActivityServiceRelationDao.xml new file mode 100644 index 0000000000..dabb923f67 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcActivityServiceRelationDao.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + DELETE FROM ic_activity_service_relation WHERE ACTIVITY_ID = #{activityId} + + + + \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcActivityUnitRelationDao.xml b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcActivityUnitRelationDao.xml new file mode 100644 index 0000000000..f8947c98e4 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcActivityUnitRelationDao.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + DELETE FROM ic_activity_unit_relation WHERE ACTIVITY_ID = #{activityId} + + + + \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcPartyActivityDao.xml b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcPartyActivityDao.xml index ede5b4c0e1..fb7912f42d 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcPartyActivityDao.xml +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcPartyActivityDao.xml @@ -28,14 +28,16 @@ + + + \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/LatestActServiceRelationDao.xml b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/LatestActServiceRelationDao.xml new file mode 100644 index 0000000000..abc0deda55 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/LatestActServiceRelationDao.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + DELETE FROM latest_act_service_relation WHERE ACT_ID = #{activityId} + + + \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/LatestActUnitRelationDao.xml b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/LatestActUnitRelationDao.xml new file mode 100644 index 0000000000..e679b5dc53 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/LatestActUnitRelationDao.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + DELETE FROM latest_act_unit_relation WHERE ACT_ID = #{activityId} + + + \ No newline at end of file From 1508e03ba6a805da6c7c6bd4c354124ff5a9dacc Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Tue, 22 Feb 2022 08:53:25 +0800 Subject: [PATCH 012/115] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=201.oss?= =?UTF-8?q?=E6=8E=A5=E5=8F=97=E5=AF=BC=E5=85=A5=E4=BB=BB=E5=8A=A1=E6=8F=8F?= =?UTF-8?q?=E8=BF=B0=E6=96=87=E4=BB=B6=E7=9A=84=E6=8E=A5=E5=8F=A3=20?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9A=201.=E5=B1=85=E6=B0=91=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E5=AF=BC=E5=85=A5=EF=BC=8C=E7=94=9F=E6=88=90excel?= =?UTF-8?q?=E6=96=87=E4=BB=B6=EF=BC=8C=E4=BC=A0=E9=80=81=E5=88=B0oss?= =?UTF-8?q?=EF=BC=8C=E8=80=8C=E4=B8=8D=E5=86=8D=E4=B8=8B=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/feign/OssFeignClient.java | 18 ++- .../fallback/OssFeignClientFallback.java | 5 + .../com/epmet/controller/OssController.java | 11 ++ .../controller/IcResiUserController.java | 38 ++++-- .../service/IcResiUserImportService.java | 3 +- .../impl/IcResiUserImportServiceImpl.java | 114 ++++++++++-------- .../service/impl/IcResiUserServiceImpl.java | 3 + 7 files changed, 129 insertions(+), 63 deletions(-) diff --git a/epmet-module/epmet-oss/epmet-oss-client/src/main/java/com/epmet/feign/OssFeignClient.java b/epmet-module/epmet-oss/epmet-oss-client/src/main/java/com/epmet/feign/OssFeignClient.java index 60697791d7..f1144b878d 100644 --- a/epmet-module/epmet-oss/epmet-oss-client/src/main/java/com/epmet/feign/OssFeignClient.java +++ b/epmet-module/epmet-oss/epmet-oss-client/src/main/java/com/epmet/feign/OssFeignClient.java @@ -14,7 +14,11 @@ import com.epmet.dto.result.UploadImgResultDTO; import com.epmet.feign.fallback.OssFeignClientFallbackFactory; import feign.codec.Encoder; import feign.form.spring.SpringFormEncoder; +import org.springframework.beans.factory.ObjectFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.http.HttpMessageConverters; import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.cloud.openfeign.support.SpringEncoder; import org.springframework.context.annotation.Bean; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.GetMapping; @@ -64,12 +68,24 @@ public interface OssFeignClient { @GetMapping(value = "oss/file/getOssFileUrl") Result getOssFileUrl(@RequestParam String filePath, @RequestParam String privacy); + /** + * 上传任务描述文件 + * 不限制大小 + * @param file + * @return + */ + @PostMapping(value = "oss/file/importTaskDescFile/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + Result uploadImportTaskDescFile(@RequestPart("file") MultipartFile file); //@Configuration class MultipartSupportConfig { + + @Autowired + private ObjectFactory messageConverters; + @Bean public Encoder feignFormEncoder() { - return new SpringFormEncoder(); + return new SpringFormEncoder(new SpringEncoder(messageConverters)); } } diff --git a/epmet-module/epmet-oss/epmet-oss-client/src/main/java/com/epmet/feign/fallback/OssFeignClientFallback.java b/epmet-module/epmet-oss/epmet-oss-client/src/main/java/com/epmet/feign/fallback/OssFeignClientFallback.java index dc43ed7467..805c2fc492 100644 --- a/epmet-module/epmet-oss/epmet-oss-client/src/main/java/com/epmet/feign/fallback/OssFeignClientFallback.java +++ b/epmet-module/epmet-oss/epmet-oss-client/src/main/java/com/epmet/feign/fallback/OssFeignClientFallback.java @@ -50,4 +50,9 @@ public class OssFeignClientFallback implements OssFeignClient { return ModuleUtils.feignConError(ServiceConstant.EPMET_OSS_SERVER, "download", filePath,privacy); } + @Override + public Result uploadImportTaskDescFile(MultipartFile file) { + return ModuleUtils.feignConError(ServiceConstant.EPMET_OSS_SERVER, "uploadImportTaskDescFile", "MultipartFile"); + } + } diff --git a/epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/controller/OssController.java b/epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/controller/OssController.java index ac84d4d820..1b79042fbc 100644 --- a/epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/controller/OssController.java +++ b/epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/controller/OssController.java @@ -437,4 +437,15 @@ public class OssController { return new Result().ok(ossService.getOssFileUrl(filePath,privacy)); } + /** + * 上传任务描述文件 + * 不限制大小 + * @param file + * @return + */ + @PostMapping("/importTaskDescFile/upload") + public Result uploadImportTaskDescFile(@RequestPart("file") MultipartFile file) { + return ossService.uploadImg(file, null); + } + } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java index defa71958e..7e4879882c 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java @@ -443,26 +443,44 @@ public class IcResiUserController implements ResultDataResolver { // 记录导入任务 importTaskId = icResiUserImportService.createImportTaskRecord(operatorId, ImportTaskConstants.BIZ_TYPE_RESI); - // 开始执行导入 - Path savePath = null; + // 转储文件到临时目录 && 执行异步导入 + submitResiImportTask(customerId, operatorId, importTaskId, extension, file, response); +// ServletRequestAttributes sra = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); +// CompletableFuture.runAsync(() -> { +// RequestContextHolder.setRequestAttributes(sra, true); +// submitResiImportTask(customerId, operatorId, importTaskId, extension, file, response); +// }); + } + + /** + * 提交居民导入任务 + * @param customerId + * @param operatorId + * @param importTaskId + * @param extension + * @param file + * @param response + */ + private void submitResiImportTask(String customerId, String operatorId, String importTaskId, String extension, MultipartFile file, HttpServletResponse response) { + + Path importTempFileSavePath = null; try { String fileName = UUID.randomUUID().toString().concat(".").concat(extension); - savePath = IC_RESI_UPLOAD_DIR.resolve(fileName); + importTempFileSavePath = IC_RESI_UPLOAD_DIR.resolve(fileName); + IOUtils.copy(file.getInputStream(), new FileOutputStream(importTempFileSavePath.toString())); - IOUtils.copy(file.getInputStream(), new FileOutputStream(savePath.toString())); List formItemList = icResiUserService.listFormItems(customerId,IcFormCodeEnum.RESI_BASE_INFO.getCode()); - - icResiUserImportService.importIcResiInfoFromExcel(importTaskId, formItemList, savePath.toString(), response); + icResiUserImportService.importIcResiInfoFromExcel(importTaskId, formItemList, importTempFileSavePath.toString(), response, IC_RESI_UPLOAD_DIR); } catch (Throwable e) { String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e); log.error("【导入居民信息失败】导入失败:{}", errorMsg); - // 要将导入任务状态设置为结束但不成功。不报错即成功,没有返回值 TODO 此处要改,将oss返回的路径存储到resultDescPath中 - icResiUserImportService.finishImportTask(importTaskId, operatorId, ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL, null, null); + // 要将导入任务状态设置为结束但不成功。不报错即成功,没有返回值 + icResiUserImportService.finishImportTask(importTaskId, operatorId, ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL, "系统异常,请查看系统日志", null); } finally { try { - if (savePath != null){ - Files.delete(savePath); + if (importTempFileSavePath != null){ + Files.delete(importTempFileSavePath); } } catch (IOException e) { log.error("【导入居民信息失败】清理上传的文件失败:{}", ExceptionUtils.getErrorStackTrace(e)); diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserImportService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserImportService.java index 8cdd76d3ab..18618dc128 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserImportService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserImportService.java @@ -3,6 +3,7 @@ package com.epmet.service; import com.epmet.dto.result.FormItemResult; import javax.servlet.http.HttpServletResponse; +import java.nio.file.Path; import java.util.List; /** @@ -12,7 +13,7 @@ import java.util.List; */ public interface IcResiUserImportService { - void importIcResiInfoFromExcel(String importTaskId, List formItemList, String excelPathName, HttpServletResponse response); + void importIcResiInfoFromExcel(String importTaskId, List formItemList, String excelPathName, HttpServletResponse response, Path importTempPath); /** * 创建导入任务 diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java index 981db445f2..8606ffa7df 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java @@ -45,15 +45,19 @@ import com.google.common.cache.CacheBuilder; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.fileupload.FileItem; +import org.apache.commons.fileupload.FileItemFactory; +import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.lang3.StringUtils; +import org.apache.http.entity.ContentType; import org.apache.poi.ss.usermodel.Workbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.web.multipart.commons.CommonsMultipartFile; import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.IOException; -import java.net.URLEncoder; +import java.io.*; +import java.nio.file.Path; import java.util.*; import java.util.stream.Collectors; @@ -125,6 +129,8 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res @Autowired private EpmetCommonServiceOpenFeignClient commonServiceOpenFeignClient; + @Autowired + private OssFeignClient ossFeignClient; /** * 字表中不需要的列 @@ -217,7 +223,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res * @param response 响应对象 */ @Override - public void importIcResiInfoFromExcel(String importTaskId, List formItemList, String excelPathName, HttpServletResponse response) { + public void importIcResiInfoFromExcel(String importTaskId, List formItemList, String excelPathName, HttpServletResponse response, Path importTempPath) { String loginUserId = loginUserUtil.getLoginUserId(); String loginUserApp = loginUserUtil.getLoginUserApp(); @@ -268,26 +274,22 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res Map categoryChangedResis = newlyOrChangedResi.get().getCategoryChangedResis(); Map transferedResis = newlyOrChangedResi.get().getTransferedResis(); - log.info("类别变动居民数:{}", categoryChangedResis.size()); - log.info("调动居民数:{}", transferedResis.size()); - //保存调动或者变更记录 saveNewResiCategoryRecord(); saveResiCategoryChangedRecord(categoryChangedResis); saveTransferedResiRecord(transferedResis); - hasErrorRows = hasErrorRows(); - - try { - // todo 做了导入记录之后,这里就要判断,没有错误就不生成文件了 - downLoadResults(hasErrorRows, response); - } catch (Exception e) { - log.error("【导入IC居民附加信息】下载导入结果信息失败:{}", ExceptionUtils.getErrorStackTrace(e)); - } - - // 更新上传记录 - if (hasErrorRows) { - finishImportTask(importTaskId, loginUserId, ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL,null, null); + // 生成错误描述文件 && 更新上传记录 + LinkedList errorRows = getErrorRows(); + if (CollectionUtils.isNotEmpty(errorRows)) { + String resultDescFilePath = null; + try { + resultDescFilePath = generateResultDescFile(errorRows, importTempPath); + } catch (Exception e) { + String errorMsg = ExceptionUtils.getErrorStackTrace(e); + log.error("【居民信息导入】", errorMsg); + } + finishImportTask(importTaskId, loginUserId, ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL,null, resultDescFilePath); } else { finishImportTask(importTaskId, loginUserId, ImportTaskConstants.PROCESS_STATUS_FINISHED_SUCCESS,null, null); } @@ -314,19 +316,16 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res } /** - * 是否有错误行 + * 返回错误行 * @return */ - private Boolean hasErrorRows() { - boolean hasError = false; - Map> tableAndErrorRows = errorRows.get(); - for (Map.Entry> entry:tableAndErrorRows.entrySet()) { - if (entry.getValue().size() != 0) { - hasError = true; - } + private LinkedList getErrorRows() { + LinkedList list = new LinkedList<>(); + for (Map.Entry> entry : errorRows.get().entrySet()) { + list.addAll(entry.getValue()); } - return hasError; + return list; } /** @@ -1027,34 +1026,47 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res } /** - * 下载导入结果 - * @param response + * 生成导入结果 * @throws IOException */ - public void downLoadResults(Boolean hasErrorRows, HttpServletResponse response) throws IOException { - String fileName; - - // 判断是否有错误信息,以确定文件名 - if (hasErrorRows) { - fileName = "导入失败条目清单.xls"; - } else { - fileName = "导入成功.xls"; + public String generateResultDescFile(LinkedList errorRows, Path importTempDir) throws IOException { + errorRows.forEach(row -> {row.setSheetName(IcResiUserTableEnum.getObjectByTableName(row.tableName).getTableComment());}); + Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("导入失败的数据列表","导入失败的数据列表"), + ErrorRow.class, errorRows); + + // 文件名 + String resultDescFileName = UUID.randomUUID().toString().concat(".xls"); + + FileItemFactory factory = new DiskFileItemFactory(16, null); + FileItem fileItem = factory.createItem("file", ContentType.APPLICATION_OCTET_STREAM.toString(), true, resultDescFileName); + OutputStream os = fileItem.getOutputStream(); + Result uploadResult = null; + try { + workbook.write(os); + uploadResult = ossFeignClient.uploadImportTaskDescFile(new CommonsMultipartFile(fileItem)); + } catch (Exception e) { + String errormsg = ExceptionUtils.getErrorStackTrace(e); + log.error("【居民信息导入】上传错误描述文件:{}", errormsg); + } finally { + try { + os.close(); + } catch (IOException e) { + String errormsg = ExceptionUtils.getErrorStackTrace(e); + log.error("【居民信息导入】上传错误描述文件关闭输出流:{}", errormsg); + } + try { + fileItem.delete(); + } catch (Exception e) { + String errormsg = ExceptionUtils.getErrorStackTrace(e); + log.error("【居民信息导入】上传错误描述文件删除临时文件:{}", errormsg); + } } - response.setHeader("Access-Control-Expose-Headers", "Content-Disposition"); - response.setHeader("content-Type", "application/vnd.ms-excel"); - response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode(fileName, "UTF-8")); - LinkedList list = new LinkedList<>(); - for (Map.Entry> entry : errorRows.get().entrySet()) { - list.addAll(entry.getValue()); + if (uploadResult == null || !uploadResult.success()) { + log.error("【居民信息导入】调用OSS上传结果描述文件失败"); + return null; } - - list.forEach(row -> {row.setSheetName(IcResiUserTableEnum.getObjectByTableName(row.tableName).getTableComment());}); - - Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("导入失败的列表","导入失败列表(没有数据说明全部成功)"), - ErrorRow.class, list); - - workbook.write(response.getOutputStream()); + return uploadResult.getData().getUrl(); } /** diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java index 5709333e9b..c548da27b2 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java @@ -42,8 +42,10 @@ 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.security.dto.TokenDto; +import com.epmet.commons.tools.security.user.LoginUserUtil; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.DateUtils; +import com.epmet.commons.tools.utils.HttpContextUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.constant.IcPlatformConstant; import com.epmet.constant.IcResiUserConstant; @@ -72,6 +74,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.servlet.http.HttpServletRequest; import java.math.BigDecimal; import java.math.RoundingMode; import java.sql.Date; From d9f0e71e90b3ebee34524d373fdf265809e267a6 Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Tue, 22 Feb 2022 10:28:53 +0800 Subject: [PATCH 013/115] =?UTF-8?q?=E8=81=94=E5=BB=BA=E6=B4=BB=E5=8A=A8?= =?UTF-8?q?=E5=85=B3=E8=81=94=E5=A4=9A=E4=B8=AA=E5=8D=95=E4=BD=8D=E5=92=8C?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E4=BA=8B=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/LatestActServiceRelationServiceImpl.java | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/LatestActServiceRelationServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/LatestActServiceRelationServiceImpl.java index f94e54a486..611207bd98 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/LatestActServiceRelationServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/LatestActServiceRelationServiceImpl.java @@ -1,24 +1,10 @@ package com.epmet.service.impl; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; -import com.epmet.commons.tools.page.PageData; -import com.epmet.commons.tools.utils.ConvertUtils; -import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.dao.LatestActServiceRelationDao; -import com.epmet.dto.LatestActServiceRelationDTO; import com.epmet.entity.LatestActServiceRelationEntity; -import com.epmet.redis.LatestActServiceRelationRedis; import com.epmet.service.LatestActServiceRelationService; -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.Arrays; -import java.util.List; -import java.util.Map; /** * 联建活动与服务事项关联表 From 76877714ac9abb1a0545fcdc5396d543d53b820d Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Tue, 22 Feb 2022 10:33:20 +0800 Subject: [PATCH 014/115] errorInfo --- epmet-module/gov-org/gov-org-server/pom.xml | 5 ++ .../constant/ImportErrorMsgConstants.java | 6 ++ .../com/epmet/controller/HouseController.java | 19 +++-- .../epmet/model/BuildingErrorInfoModel.java | 7 +- .../com/epmet/model/HouseErrorInfoModel.java | 11 +-- .../model/ImportBuildingInfoListener.java | 54 ++++++++++---- .../epmet/model/ImportHouseInfoListener.java | 55 +++++++++++---- .../model/ImportNeighborHoodInfoListener.java | 44 +++++++++--- .../model/NeighborHoodErrorInfoModel.java | 5 +- .../epmet/service/IcNeighborHoodService.java | 3 + .../service/impl/BuildingServiceImpl.java | 20 ++++-- .../impl/IcNeighborHoodServiceImpl.java | 70 ++++++++++++++++++- 12 files changed, 239 insertions(+), 60 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/pom.xml b/epmet-module/gov-org/gov-org-server/pom.xml index 094292fe13..0a13f2a38d 100644 --- a/epmet-module/gov-org/gov-org-server/pom.xml +++ b/epmet-module/gov-org/gov-org-server/pom.xml @@ -33,6 +33,11 @@ epmet-commons-dynamic-datasource 2.0.0 + + com.epmet + epmet-oss-client + 2.0.0 + org.springframework.boot spring-boot-starter-web diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/constant/ImportErrorMsgConstants.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/constant/ImportErrorMsgConstants.java index d49715e330..76f69d819e 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/constant/ImportErrorMsgConstants.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/constant/ImportErrorMsgConstants.java @@ -7,6 +7,12 @@ package com.epmet.constant; */ public interface ImportErrorMsgConstants { + String EXIST_ERROR = "数据已存在"; + String HOUSE_ERROR = "所属组织、所属网格、所属小区、所属楼栋、单元号、房屋类型、房屋用途、出租、房主姓名、房主电话、房主身份证的值未填写,或者所填写信息在系统中未找到"; + + String BUILDING_ERROR = "所属组织、所属网格、所属小区、楼栋类型、单元数的值未填写,或者所填写信息在系统中未找到"; + + String NEIGHBOR_HOOD_ERROR = "所属组织、所属网格、详细地址的值未填写,或者所填写信息在系统中未找到"; } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java index 017da95fd9..026948d385 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java @@ -27,17 +27,17 @@ import com.epmet.commons.tools.aop.NoRepeatSubmit; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.ServiceConstant; 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.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.constants.ImportTaskConstants; import com.epmet.dao.IcBuildingDao; import com.epmet.dto.form.*; -import com.epmet.dto.result.HouseInfoDTO; -import com.epmet.dto.result.IcNeighborHoodResultDTO; -import com.epmet.dto.result.ImportResultDTO; -import com.epmet.dto.result.LoginUserDetailsResultDTO; +import com.epmet.dto.result.*; import com.epmet.excel.IcHouseExcel; +import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.feign.EpmetUserOpenFeignClient; import com.epmet.feign.GovOrgOpenFeignClient; import com.epmet.model.HouseInfoModel; @@ -85,6 +85,8 @@ public class HouseController implements ResultDataResolver { private IcNeighborHoodService neighborHoodService; @Autowired private IcHouseService icHouseService; + @Autowired + private EpmetCommonServiceOpenFeignClient epmetCommonServiceOpenFeignClient; @PostMapping("houselist") @@ -266,10 +268,17 @@ public class HouseController implements ResultDataResolver { } catch (IOException e) { return new Result().error("读取文件失败"); } + ImportTaskCommonFormDTO importFormDTO = new ImportTaskCommonFormDTO(); + importFormDTO.setBizType(ImportTaskConstants.BIZ_TYPE_HOUSE); + importFormDTO.setOperatorId(formDTO.getUserId()); + Result importTask = epmetCommonServiceOpenFeignClient.createImportTask(importFormDTO); + if (!importTask.success()){ + throw new EpmetException("创建任务失败"); + } excelReader = EasyExcel.read(inputStream).build(); // 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener ReadSheet readSheet = EasyExcel.readSheet(0).head(HouseInfoModel.class) - .registerReadListener(new ImportHouseInfoListener(formDTO,icBuildingDao,icHouseRedis,neighborHoodService,icHouseService)) + .registerReadListener(new ImportHouseInfoListener(formDTO,icBuildingDao,icHouseRedis,neighborHoodService,icHouseService,epmetCommonServiceOpenFeignClient,importTask.getData().getTaskId())) .build(); excelReader.read(readSheet); } finally { diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/BuildingErrorInfoModel.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/BuildingErrorInfoModel.java index e7db295a7e..d85a95854f 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/BuildingErrorInfoModel.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/BuildingErrorInfoModel.java @@ -1,5 +1,6 @@ package com.epmet.model; +import cn.afterturn.easypoi.excel.annotation.Excel; import com.alibaba.excel.annotation.ExcelProperty; import lombok.Data; @@ -11,13 +12,13 @@ import lombok.Data; @Data public class BuildingErrorInfoModel { - @ExcelProperty(value = "小区名称") + @Excel(name = "小区名称") private String neighborHoodName; - @ExcelProperty(value = "楼栋名称") + @Excel(name = "楼栋名称") private String buildingName; - @ExcelProperty(value = "错误信息") + @Excel(name = "错误信息") private String errorMsg; } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseErrorInfoModel.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseErrorInfoModel.java index 9cb84948c5..c050e3a8e4 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseErrorInfoModel.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseErrorInfoModel.java @@ -1,5 +1,6 @@ package com.epmet.model; +import cn.afterturn.easypoi.excel.annotation.Excel; import com.alibaba.excel.annotation.ExcelProperty; import lombok.Data; import org.hibernate.validator.constraints.Length; @@ -12,19 +13,19 @@ import org.hibernate.validator.constraints.Length; @Data public class HouseErrorInfoModel { - @ExcelProperty(value = "所属小区") + @Excel(name = "所属小区") private String neighborHoodName; - @ExcelProperty(value = "所属楼栋") + @Excel(name = "所属楼栋") private String buildingName; - @ExcelProperty(value = "单元号") + @Excel(name = "单元号") private Integer buildingUnit; - @ExcelProperty(value = "门牌号") + @Excel(name = "门牌号") private String doorName; - @ExcelProperty(value = "错误信息") + @Excel(name = "错误信息") private String errorMsg; } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java index 63e5f39000..73f4a18b84 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java @@ -9,20 +9,22 @@ 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.constant.CustomerGridConstant; +import com.epmet.constant.ImportErrorMsgConstants; +import com.epmet.constants.ImportTaskConstants; import com.epmet.dao.IcBuildingDao; import com.epmet.dto.ImportGeneralDTO; import com.epmet.dto.form.ImportInfoFormDTO; +import com.epmet.dto.form.ImportTaskCommonFormDTO; import com.epmet.dto.result.ImportResultDTO; import com.epmet.enums.BuildingTypeEnums; +import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.redis.IcHouseRedis; import com.epmet.service.IcNeighborHoodService; import org.apache.commons.lang3.StringUtils; import org.springframework.util.CollectionUtils; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; +import java.io.IOException; +import java.util.*; import java.util.stream.Collectors; /** @@ -36,6 +38,7 @@ public class ImportBuildingInfoListener extends AnalysisEventListener errorInfos = new ArrayList<>(); BuildingInfoModel info = null; + String taskId = ""; List needDisposeList = new ArrayList<>(); List needInsertList = new ArrayList<>(); @@ -56,12 +59,15 @@ public class ImportBuildingInfoListener extends AnalysisEventListener { nums.add(e.getNum()); - disposeErrorMsg(info,""); + disposeErrorMsg(info,ImportErrorMsgConstants.EXIST_ERROR); }); } } @@ -163,7 +169,7 @@ public class ImportBuildingInfoListener extends AnalysisEventListener errorInfos = new ArrayList<>(); HouseInfoModel info = null; + String taskId = ""; List needDisposeList = new ArrayList<>(); List needInsertList = new ArrayList<>(); @@ -61,13 +67,16 @@ public class ImportHouseInfoListener extends AnalysisEventListener errorInfos = new ArrayList<>(); NeighborHoodInfoModel info = null; + String taskId = ""; List needDisposeList = new ArrayList<>(); List needInsertList = new ArrayList<>(); @@ -57,13 +63,16 @@ public class ImportNeighborHoodInfoListener extends AnalysisEventListener { nums.add(e.getNum()); - disposeErrorMsg(info,""); + disposeErrorMsg(info,ImportErrorMsgConstants.EXIST_ERROR); }); } List notExistList = groupByBuildingExistStatus.get(false); @@ -178,7 +186,7 @@ public class ImportNeighborHoodInfoListener extends AnalysisEventListener void insertPropertyManagement(List propertyManagementEntities); void neighborHoodPropertyInsert(List entities); + + String orgGeneralImport(Collection errorRows, Class tClass) throws IOException; } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java index 15daabf246..e1ee7204d5 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java @@ -13,24 +13,25 @@ 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.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.Result; +import com.epmet.constants.ImportTaskConstants; import com.epmet.dao.*; import com.epmet.dto.BuildingTreeLevelDTO; import com.epmet.dto.CustomerStaffAgencyDTO; import com.epmet.dto.IcBuildingDTO; import com.epmet.dto.form.IcBulidingFormDTO; import com.epmet.dto.form.ImportInfoFormDTO; +import com.epmet.dto.form.ImportTaskCommonFormDTO; import com.epmet.dto.form.ListIcNeighborHoodFormDTO; -import com.epmet.dto.result.BuildingResultDTO; -import com.epmet.dto.result.BuildingResultPagedDTO; -import com.epmet.dto.result.IcNeighborHoodResultDTO; -import com.epmet.dto.result.ImportResultDTO; +import com.epmet.dto.result.*; import com.epmet.entity.*; import com.epmet.enums.BuildingTypeEnums; import com.epmet.excel.IcBuildingExcel; +import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.model.BuildingInfoModel; import com.epmet.model.HouseInfoModel; import com.epmet.model.ImportBuildingInfoListener; @@ -89,6 +90,8 @@ public class BuildingServiceImpl implements BuildingService { private IcHouseRedis icHouseRedis; @Autowired private IcNeighborHoodService neighborHoodService; + @Autowired + private EpmetCommonServiceOpenFeignClient epmetCommonServiceOpenFeignClient; @Override @Transactional(rollbackFor = Exception.class) @@ -406,10 +409,17 @@ public class BuildingServiceImpl implements BuildingService { } catch (IOException e) { return new Result().error("读取文件失败"); } + ImportTaskCommonFormDTO importFormDTO = new ImportTaskCommonFormDTO(); + importFormDTO.setBizType(ImportTaskConstants.BIZ_TYPE_NEIGHBOR_HOOD); + importFormDTO.setOperatorId(formDTO.getUserId()); + Result importTask = epmetCommonServiceOpenFeignClient.createImportTask(importFormDTO); + if (!importTask.success()){ + throw new EpmetException("创建任务失败"); + } excelReader = EasyExcel.read(inputStream).build(); // 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener ReadSheet readSheet = EasyExcel.readSheet(0).head(BuildingInfoModel.class) - .registerReadListener(new ImportBuildingInfoListener(formDTO,icHouseRedis,icBuildingDao,neighborHoodService)) + .registerReadListener(new ImportBuildingInfoListener(formDTO,icHouseRedis,icBuildingDao,neighborHoodService,epmetCommonServiceOpenFeignClient,importTask.getData().getTaskId())) .build(); excelReader.read(readSheet); } finally { diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java index 99db449d72..5b22e65a97 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java @@ -17,7 +17,8 @@ package com.epmet.service.impl; -import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult; +import cn.afterturn.easypoi.excel.ExcelExportUtil; +import cn.afterturn.easypoi.excel.entity.ExportParams; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelReader; import com.alibaba.excel.read.metadata.ReadSheet; @@ -31,6 +32,7 @@ import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; import com.epmet.commons.tools.dto.result.OptionResultDTO; 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.page.PageData; import com.epmet.commons.tools.redis.common.CustomerOrgRedis; import com.epmet.commons.tools.redis.common.CustomerStaffRedis; @@ -39,16 +41,22 @@ import com.epmet.commons.tools.redis.common.bean.GridInfoCache; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.constant.CustomerGridConstant; +import com.epmet.constants.ImportTaskConstants; import com.epmet.dao.CustomerGridDao; import com.epmet.dao.IcBuildingDao; import com.epmet.dao.IcNeighborHoodDao; import com.epmet.dao.IcPropertyManagementDao; import com.epmet.dto.*; import com.epmet.dto.form.ImportInfoFormDTO; +import com.epmet.dto.form.ImportTaskCommonFormDTO; import com.epmet.dto.result.ImportResultDTO; +import com.epmet.dto.result.ImportTaskCommonResultDTO; import com.epmet.dto.result.InfoByNamesResultDTO; +import com.epmet.dto.result.UploadImgResultDTO; import com.epmet.entity.*; import com.epmet.excel.IcNeighborHoodExcel; +import com.epmet.feign.EpmetCommonServiceOpenFeignClient; +import com.epmet.feign.OssFeignClient; import com.epmet.model.ImportNeighborHoodInfoListener; import com.epmet.model.NeighborHoodInfoModel; import com.epmet.redis.IcHouseRedis; @@ -58,14 +66,21 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.ListUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.http.entity.ContentType; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.commons.fileupload.FileItem; +import org.apache.tomcat.util.http.fileupload.FileItemFactory; +import org.apache.tomcat.util.http.fileupload.disk.DiskFileItemFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.commons.CommonsMultipartFile; import javax.annotation.Resource; import java.io.IOException; import java.io.InputStream; +import java.io.OutputStream; import java.util.*; import java.util.stream.Collectors; @@ -95,6 +110,10 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl page(Map params) { @@ -396,10 +415,17 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl().error("读取文件失败"); } + ImportTaskCommonFormDTO importFormDTO = new ImportTaskCommonFormDTO(); + importFormDTO.setBizType(ImportTaskConstants.BIZ_TYPE_NEIGHBOR_HOOD); + importFormDTO.setOperatorId(formDTO.getUserId()); + Result importTask = epmetCommonServiceOpenFeignClient.createImportTask(importFormDTO); + if (!importTask.success()){ + throw new EpmetException("创建任务失败"); + } excelReader = EasyExcel.read(inputStream).build(); // 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener ReadSheet readSheet = EasyExcel.readSheet(0).head(NeighborHoodInfoModel.class) - .registerReadListener(new ImportNeighborHoodInfoListener(formDTO,icHouseRedis,icBuildingDao,this,propertyManagementDao)) + .registerReadListener(new ImportNeighborHoodInfoListener(formDTO,icHouseRedis,icBuildingDao,this,propertyManagementDao,epmetCommonServiceOpenFeignClient,importTask.getData().getTaskId())) .build(); excelReader.read(readSheet); } finally { @@ -609,4 +635,44 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl String orgGeneralImport(Collection errorRows, Class tClass) throws IOException { + Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("导入失败的数据列表","导入失败的数据列表"), + tClass, errorRows); + + // 文件名 + String resultDescFileName = UUID.randomUUID().toString().concat(".xls"); + + FileItemFactory factory = new DiskFileItemFactory(16, null); + FileItem fileItem = (FileItem) factory.createItem("file", ContentType.APPLICATION_OCTET_STREAM.toString(), true, resultDescFileName); + OutputStream os = fileItem.getOutputStream(); + Result uploadResult = null; + try { + workbook.write(os); + uploadResult = ossFeignClient.uploadImportTaskDescFile(new CommonsMultipartFile(fileItem)); + } catch (Exception e) { + String errormsg = ExceptionUtils.getErrorStackTrace(e); + log.error("【居民信息导入】上传错误描述文件:{}", errormsg); + } finally { + try { + os.close(); + } catch (IOException e) { + String errormsg = ExceptionUtils.getErrorStackTrace(e); + log.error("【居民信息导入】上传错误描述文件关闭输出流:{}", errormsg); + } + try { + fileItem.delete(); + } catch (Exception e) { + String errormsg = ExceptionUtils.getErrorStackTrace(e); + log.error("【居民信息导入】上传错误描述文件删除临时文件:{}", errormsg); + } + } + + if (uploadResult == null || !uploadResult.success()) { + log.error("【居民信息导入】调用OSS上传结果描述文件失败"); + return null; + } + return uploadResult.getData().getUrl(); + } + } From aee550a064e0c6800eb01613b2d2b4a16637bda2 Mon Sep 17 00:00:00 2001 From: jianjun Date: Tue, 22 Feb 2022 10:56:34 +0800 Subject: [PATCH 015/115] =?UTF-8?q?=E5=AF=BC=E5=85=A5=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E5=88=86=E9=A1=B5=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tools/validator/group/QueryGroup.java | 19 ++++++++++++++++++ .../dto/form/ImportTaskCommonFormDTO.java | 6 ++++-- .../controller/ImportTaskController.java | 19 ++++++++++++++++-- .../com/epmet/service/ImportTaskService.java | 15 ++++++++++++-- .../service/impl/ImportTaskServiceImpl.java | 20 +++++++++++++++++-- 5 files changed, 71 insertions(+), 8 deletions(-) create mode 100644 epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/validator/group/QueryGroup.java diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/validator/group/QueryGroup.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/validator/group/QueryGroup.java new file mode 100644 index 0000000000..df4536366b --- /dev/null +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/validator/group/QueryGroup.java @@ -0,0 +1,19 @@ +/** + * Copyright (c) 2018 人人开源 All rights reserved. + * + * https://www.renren.io + * + * 版权所有,侵权必究! + */ + +package com.epmet.commons.tools.validator.group; + +/** + * 查询 Group + * + * @author Mark sunlightcs@gmail.com + * @since 1.0.0 + */ +public interface QueryGroup { + +} diff --git a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/form/ImportTaskCommonFormDTO.java b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/form/ImportTaskCommonFormDTO.java index 07a6137ca4..0b596b40c7 100644 --- a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/form/ImportTaskCommonFormDTO.java +++ b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/form/ImportTaskCommonFormDTO.java @@ -1,11 +1,13 @@ package com.epmet.dto.form; +import com.epmet.commons.tools.dto.form.PageFormDTO; +import com.epmet.commons.tools.validator.group.QueryGroup; import lombok.Data; import javax.validation.constraints.NotBlank; @Data -public class ImportTaskCommonFormDTO { +public class ImportTaskCommonFormDTO extends PageFormDTO { public interface Create {} public interface Finish {} @@ -13,7 +15,7 @@ public class ImportTaskCommonFormDTO { /** * 操作者ID */ - @NotBlank(message = "操作者ID必填", groups = { Create.class, Finish.class }) + @NotBlank(message = "操作者ID必填", groups = { Create.class, Finish.class, QueryGroup.class}) private String operatorId; /** diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/ImportTaskController.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/ImportTaskController.java index d6ce2f4be8..24cb53f8d4 100644 --- a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/ImportTaskController.java +++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/ImportTaskController.java @@ -1,9 +1,13 @@ package com.epmet.controller; +import com.epmet.commons.tools.annotation.LoginUser; 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.Result; import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.commons.tools.validator.group.QueryGroup; import com.epmet.dto.form.ImportTaskCommonFormDTO; import com.epmet.dto.result.ImportTaskCommonResultDTO; import com.epmet.service.ImportTaskService; @@ -12,8 +16,6 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.HashMap; - @RestController @RequestMapping("import-task") public class ImportTaskController { @@ -21,6 +23,19 @@ public class ImportTaskController { @Autowired private ImportTaskService importTaskService; + /** + * desc:分页获取个人导入记录 + * @param tokenDto + * @return + */ + @RequestMapping("page") + public Result> list(@LoginUser TokenDto tokenDto, @RequestBody ImportTaskCommonFormDTO param) { + //tokenDto.setUserId("d8dfc6c1fa2538976059f3900036d419"); + param.setOperatorId(tokenDto.getUserId()); + ValidatorUtils.validateEntity(param, QueryGroup.class); + return new Result().ok(importTaskService.page(param)); + } + /** * 创建导入任务 * @param input diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/ImportTaskService.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/ImportTaskService.java index dee9e7984c..dbc4cde7c1 100644 --- a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/ImportTaskService.java +++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/ImportTaskService.java @@ -1,8 +1,12 @@ package com.epmet.service; +import com.epmet.commons.tools.page.PageData; +import com.epmet.dto.form.ImportTaskCommonFormDTO; +import com.epmet.dto.result.ImportTaskCommonResultDTO; + /** - * + * * * @author generator generator@elink-cn.com * @since v1.0.0 2022-02-15 @@ -32,4 +36,11 @@ public interface ImportTaskService { * @param resultDesc 结果描述文本 */ Boolean finish(String taskId, String processStatus, String operatorId, String resultDescFile, String resultDesc); -} \ No newline at end of file + + /** + * desc:分页获取个人导入记录 + * @param param + * @return + */ + PageData page(ImportTaskCommonFormDTO param); +} diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java index 987fe3a0ae..6692d1f46e 100644 --- a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java +++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java @@ -3,17 +3,22 @@ package com.epmet.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.tools.page.PageData; import com.epmet.constants.ImportTaskConstants; import com.epmet.dao.ImportTaskDao; +import com.epmet.dto.form.ImportTaskCommonFormDTO; +import com.epmet.dto.result.ImportTaskCommonResultDTO; import com.epmet.entity.ImportTaskEntity; import com.epmet.service.ImportTaskService; +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Date; /** - * + * * * @author generator generator@elink-cn.com * @since v1.0.0 2022-02-15 @@ -77,4 +82,15 @@ public class ImportTaskServiceImpl implements ImportTaskService { public Boolean finish(String taskId, String processStatus, String operatorId, String resultDescFile, String resultDesc) { return importRecordDao.finish(taskId, processStatus, operatorId, resultDesc, resultDescFile) > 0; } -} \ No newline at end of file + + @Override + public PageData page(ImportTaskCommonFormDTO param) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ImportTaskEntity::getOperatorId,param.getOperatorId()); + Page page = PageHelper.startPage(param.getPageNo(), param.getPageSize(), param.isPage()).doSelectPage(() -> { + importRecordDao.selectList(queryWrapper); + }); + PageData result = new PageData<>(page.getResult(),page.getTotal()); + return result; + } +} From c65e42672f6ecc2b338738071b00c0390c84f6b6 Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Tue, 22 Feb 2022 12:11:27 +0800 Subject: [PATCH 016/115] =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9A=201.?= =?UTF-8?q?=E5=AF=BC=E5=85=A5=E4=BB=BB=E5=8A=A1=E8=AE=B0=E5=BD=95-?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E6=8E=A5=E5=8F=A3-=E6=96=B0=E5=A2=9EoriginFi?= =?UTF-8?q?leName=20=E5=8E=9F=E5=A7=8B=E6=96=87=E4=BB=B6=E5=90=8D=E5=8F=82?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/dto/form/ImportTaskCommonFormDTO.java | 6 ++++++ .../com/epmet/controller/ImportTaskController.java | 3 ++- .../main/java/com/epmet/entity/ImportTaskEntity.java | 10 ++++++++++ .../main/java/com/epmet/service/ImportTaskService.java | 3 ++- .../com/epmet/service/impl/ImportTaskServiceImpl.java | 8 +++++++- .../src/main/resources/mapper/ImportTaskDao.xml | 1 + 6 files changed, 28 insertions(+), 3 deletions(-) diff --git a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/form/ImportTaskCommonFormDTO.java b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/form/ImportTaskCommonFormDTO.java index 07a6137ca4..c72566d91e 100644 --- a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/form/ImportTaskCommonFormDTO.java +++ b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/form/ImportTaskCommonFormDTO.java @@ -10,6 +10,12 @@ public class ImportTaskCommonFormDTO { public interface Create {} public interface Finish {} + /** + * 原始文件名 + */ + @NotBlank(message = "原始文件名必填", groups = { Create.class }) + private String originFileName; + /** * 操作者ID */ diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/ImportTaskController.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/ImportTaskController.java index d6ce2f4be8..2780dc302b 100644 --- a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/ImportTaskController.java +++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/ImportTaskController.java @@ -31,8 +31,9 @@ public class ImportTaskController { ValidatorUtils.validateEntity(input, ImportTaskCommonFormDTO.Create.class); String operatorId = input.getOperatorId(); String bizType = input.getBizType(); + String originFileName = input.getOriginFileName(); - String taskId = importTaskService.createProcessTask(operatorId, bizType); + String taskId = importTaskService.createProcessTask(operatorId, bizType, originFileName); ImportTaskCommonResultDTO ro = new ImportTaskCommonResultDTO(taskId); return new Result().ok(ro); } diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/entity/ImportTaskEntity.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/entity/ImportTaskEntity.java index 8473ef1d3a..0602a42963 100644 --- a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/entity/ImportTaskEntity.java +++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/entity/ImportTaskEntity.java @@ -20,6 +20,16 @@ public class ImportTaskEntity extends BaseEpmetEntity { private static final long serialVersionUID = 1L; + /** + * 客户ID + */ + private String customerId; + + /** + * 原始文件名 + */ + private String originFileName; + /** * 业务类型。resi:居民;楼栋:building;房屋:house。依次补充 */ diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/ImportTaskService.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/ImportTaskService.java index dee9e7984c..ab59a44956 100644 --- a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/ImportTaskService.java +++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/ImportTaskService.java @@ -21,8 +21,9 @@ public interface ImportTaskService { * 创建处理任务 * @param operatorId * @param bizType + * @param originFileName 原始文件名 */ - String createProcessTask(String operatorId, String bizType); + String createProcessTask(String operatorId, String bizType, String originFileName); /** * 结束导入 diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java index 987fe3a0ae..3565e4c8f7 100644 --- a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java +++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java @@ -3,6 +3,7 @@ package com.epmet.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.tools.security.user.LoginUserUtil; import com.epmet.constants.ImportTaskConstants; import com.epmet.dao.ImportTaskDao; import com.epmet.entity.ImportTaskEntity; @@ -24,6 +25,9 @@ public class ImportTaskServiceImpl implements ImportTaskService { @Autowired private ImportTaskDao importRecordDao; + @Autowired + private LoginUserUtil loginUserUtil; + // /** // * 该用户,该业务类型,是否有正在处理的导入任务 // * @param operatorId 操作者ID @@ -56,7 +60,7 @@ public class ImportTaskServiceImpl implements ImportTaskService { } @Override - public String createProcessTask(String operatorId, String bizType) { + public String createProcessTask(String operatorId, String bizType, String originFileName) { if (existsProcessingTask(operatorId, bizType)) { throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "已存在执行中的导入任务,请等待执行完成。", @@ -67,7 +71,9 @@ public class ImportTaskServiceImpl implements ImportTaskService { importRecord.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_PROCESSING); importRecord.setOperatorId(operatorId); importRecord.setBizType(bizType); + importRecord.setCustomerId(loginUserUtil.getLoginUserCustomerId()); importRecord.setStartTime(new Date()); + importRecord.setOriginFileName(originFileName); importRecordDao.insert(importRecord); return importRecord.getId(); diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/resources/mapper/ImportTaskDao.xml b/epmet-module/epmet-common-service/common-service-server/src/main/resources/mapper/ImportTaskDao.xml index edc56fa5c7..fce694cb16 100644 --- a/epmet-module/epmet-common-service/common-service-server/src/main/resources/mapper/ImportTaskDao.xml +++ b/epmet-module/epmet-common-service/common-service-server/src/main/resources/mapper/ImportTaskDao.xml @@ -5,6 +5,7 @@ + From c2f6067060983f843616a340252998a51498220b Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Tue, 22 Feb 2022 13:38:09 +0800 Subject: [PATCH 017/115] errorInfo --- .../com/epmet/constant/ImportErrorMsgConstants.java | 4 ++++ .../java/com/epmet/controller/HouseController.java | 2 ++ .../com/epmet/service/impl/BuildingServiceImpl.java | 2 ++ .../epmet/service/impl/IcNeighborHoodServiceImpl.java | 10 ++++++---- 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/constant/ImportErrorMsgConstants.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/constant/ImportErrorMsgConstants.java index 76f69d819e..6dce569719 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/constant/ImportErrorMsgConstants.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/constant/ImportErrorMsgConstants.java @@ -15,4 +15,8 @@ public interface ImportErrorMsgConstants { String NEIGHBOR_HOOD_ERROR = "所属组织、所属网格、详细地址的值未填写,或者所填写信息在系统中未找到"; + String HOUSE_ERROR_NAME = "导入失败的列表-房屋"; + String BUILDING_ERROR_NAME = "导入失败的列表-楼宇"; + String NEIGHBORHOOD_ERROR_NAME = "导入失败的列表-小区"; + } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java index 026948d385..7bb02aac72 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java @@ -32,6 +32,7 @@ import com.epmet.commons.tools.feign.ResultDataResolver; 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.constant.ImportErrorMsgConstants; import com.epmet.constants.ImportTaskConstants; import com.epmet.dao.IcBuildingDao; import com.epmet.dto.form.*; @@ -271,6 +272,7 @@ public class HouseController implements ResultDataResolver { ImportTaskCommonFormDTO importFormDTO = new ImportTaskCommonFormDTO(); importFormDTO.setBizType(ImportTaskConstants.BIZ_TYPE_HOUSE); importFormDTO.setOperatorId(formDTO.getUserId()); + importFormDTO.setOriginFileName(ImportErrorMsgConstants.HOUSE_ERROR_NAME); Result importTask = epmetCommonServiceOpenFeignClient.createImportTask(importFormDTO); if (!importTask.success()){ throw new EpmetException("创建任务失败"); diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java index e1ee7204d5..15a3db4777 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java @@ -18,6 +18,7 @@ import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.Result; +import com.epmet.constant.ImportErrorMsgConstants; import com.epmet.constants.ImportTaskConstants; import com.epmet.dao.*; import com.epmet.dto.BuildingTreeLevelDTO; @@ -412,6 +413,7 @@ public class BuildingServiceImpl implements BuildingService { ImportTaskCommonFormDTO importFormDTO = new ImportTaskCommonFormDTO(); importFormDTO.setBizType(ImportTaskConstants.BIZ_TYPE_NEIGHBOR_HOOD); importFormDTO.setOperatorId(formDTO.getUserId()); + importFormDTO.setOriginFileName(ImportErrorMsgConstants.BUILDING_ERROR_NAME); Result importTask = epmetCommonServiceOpenFeignClient.createImportTask(importFormDTO); if (!importTask.success()){ throw new EpmetException("创建任务失败"); diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java index 5b22e65a97..c86831ef00 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java @@ -41,6 +41,7 @@ import com.epmet.commons.tools.redis.common.bean.GridInfoCache; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.constant.CustomerGridConstant; +import com.epmet.constant.ImportErrorMsgConstants; import com.epmet.constants.ImportTaskConstants; import com.epmet.dao.CustomerGridDao; import com.epmet.dao.IcBuildingDao; @@ -65,12 +66,12 @@ import com.epmet.util.ExcelPoiUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.ListUtils; +import org.apache.commons.fileupload.FileItem; +import org.apache.commons.fileupload.FileItemFactory; +import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.lang3.StringUtils; import org.apache.http.entity.ContentType; import org.apache.poi.ss.usermodel.Workbook; -import org.apache.commons.fileupload.FileItem; -import org.apache.tomcat.util.http.fileupload.FileItemFactory; -import org.apache.tomcat.util.http.fileupload.disk.DiskFileItemFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -418,6 +419,7 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl importTask = epmetCommonServiceOpenFeignClient.createImportTask(importFormDTO); if (!importTask.success()){ throw new EpmetException("创建任务失败"); @@ -644,7 +646,7 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl uploadResult = null; try { From d49b365e500ca981be3309c66a12ceaf7a1d659d Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Tue, 22 Feb 2022 13:48:56 +0800 Subject: [PATCH 018/115] errorInfo --- .../main/java/com/epmet/service/impl/BuildingServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java index 15a3db4777..e1c02d91e5 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java @@ -411,7 +411,7 @@ public class BuildingServiceImpl implements BuildingService { return new Result().error("读取文件失败"); } ImportTaskCommonFormDTO importFormDTO = new ImportTaskCommonFormDTO(); - importFormDTO.setBizType(ImportTaskConstants.BIZ_TYPE_NEIGHBOR_HOOD); + importFormDTO.setBizType(ImportTaskConstants.BIZ_TYPE_BUILDING); importFormDTO.setOperatorId(formDTO.getUserId()); importFormDTO.setOriginFileName(ImportErrorMsgConstants.BUILDING_ERROR_NAME); Result importTask = epmetCommonServiceOpenFeignClient.createImportTask(importFormDTO); From 3dfd00db2b81f84946aaaec71e533dc4eae31206 Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Tue, 22 Feb 2022 13:55:53 +0800 Subject: [PATCH 019/115] =?UTF-8?q?errorInfo=E5=AE=BD=E5=BA=A6=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/model/BuildingErrorInfoModel.java | 6 +++--- .../main/java/com/epmet/model/HouseErrorInfoModel.java | 10 +++++----- .../com/epmet/model/NeighborHoodErrorInfoModel.java | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/BuildingErrorInfoModel.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/BuildingErrorInfoModel.java index d85a95854f..7477c1a109 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/BuildingErrorInfoModel.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/BuildingErrorInfoModel.java @@ -12,13 +12,13 @@ import lombok.Data; @Data public class BuildingErrorInfoModel { - @Excel(name = "小区名称") + @Excel(name = "小区名称" , width = 20) private String neighborHoodName; - @Excel(name = "楼栋名称") + @Excel(name = "楼栋名称", width = 20) private String buildingName; - @Excel(name = "错误信息") + @Excel(name = "错误信息", width = 100) private String errorMsg; } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseErrorInfoModel.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseErrorInfoModel.java index c050e3a8e4..5d2a444f90 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseErrorInfoModel.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseErrorInfoModel.java @@ -13,19 +13,19 @@ import org.hibernate.validator.constraints.Length; @Data public class HouseErrorInfoModel { - @Excel(name = "所属小区") + @Excel(name = "所属小区", width = 20) private String neighborHoodName; - @Excel(name = "所属楼栋") + @Excel(name = "所属楼栋", width = 20) private String buildingName; - @Excel(name = "单元号") + @Excel(name = "单元号", width = 20) private Integer buildingUnit; - @Excel(name = "门牌号") + @Excel(name = "门牌号", width = 20) private String doorName; - @Excel(name = "错误信息") + @Excel(name = "错误信息", width = 200) private String errorMsg; } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/NeighborHoodErrorInfoModel.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/NeighborHoodErrorInfoModel.java index cb1af741ef..2bdc863e00 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/NeighborHoodErrorInfoModel.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/NeighborHoodErrorInfoModel.java @@ -12,10 +12,10 @@ import lombok.Data; @Data public class NeighborHoodErrorInfoModel { - @Excel(name = "小区名称") + @Excel(name = "小区名称", width = 20) private String neighborHoodName; - @Excel(name = "错误信息") + @Excel(name = "错误信息", width = 100) private String errorMsg; } From a974621a40ac63a2a33338780567e745c9340ae7 Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Tue, 22 Feb 2022 15:17:53 +0800 Subject: [PATCH 020/115] =?UTF-8?q?=E5=85=9A=E5=91=98=E9=A3=8E=E9=87=87?= =?UTF-8?q?=E3=80=81=E7=A4=BE=E4=BC=9A=E8=87=AA=E7=BB=84=E7=BB=87=E5=AF=BC?= =?UTF-8?q?=E5=85=A5=E7=A8=8B=E5=BA=8F=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/constants/ImportTaskConstants.java | 2 + .../epmet-heart/epmet-heart-server/pom.xml | 12 ++ ...IcCommunitySelfOrganizationController.java | 20 +- .../dao/IcCommunitySelfOrganizationDao.java | 3 +- .../IcCommunitySelfOrganizationService.java | 2 +- ...cCommunitySelfOrganizationServiceImpl.java | 198 +++++++++++++++++- .../mapper/IcCommunitySelfOrganizationDao.xml | 14 ++ .../resi-partymember-server/pom.xml | 12 ++ .../IcPartymemberStyleController.java | 27 ++- .../service/IcPartymemberStyleService.java | 2 +- .../impl/IcPartymemberStyleServiceImpl.java | 118 ++++++++++- 11 files changed, 391 insertions(+), 19 deletions(-) diff --git a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/constants/ImportTaskConstants.java b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/constants/ImportTaskConstants.java index c67ddbb549..82e25887b7 100644 --- a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/constants/ImportTaskConstants.java +++ b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/constants/ImportTaskConstants.java @@ -11,6 +11,8 @@ public interface ImportTaskConstants { String BIZ_TYPE_NEIGHBOR_HOOD = "neighborHood"; String BIZ_TYPE_BUILDING = "building"; String BIZ_TYPE_HOUSE = "house"; + String BIZ_TYPE_PARTY_MEMBER = "party_member"; + String BIZ_TYPE_COMMUNITY_SELF_ORG = "community_self_org"; /** * 处理状态:处理中 diff --git a/epmet-module/epmet-heart/epmet-heart-server/pom.xml b/epmet-module/epmet-heart/epmet-heart-server/pom.xml index ba92a6d321..5bc910e846 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/pom.xml +++ b/epmet-module/epmet-heart/epmet-heart-server/pom.xml @@ -94,6 +94,18 @@ epmet-commons-rocketmq 2.0.0 + + com.epmet + common-service-client + 2.0.0 + compile + + + com.epmet + epmet-oss-client + 2.0.0 + compile + diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcCommunitySelfOrganizationController.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcCommunitySelfOrganizationController.java index 5dc6a27d04..94fd66386b 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcCommunitySelfOrganizationController.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcCommunitySelfOrganizationController.java @@ -34,14 +34,17 @@ import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.commons.tools.validator.group.AddGroup; import com.epmet.commons.tools.validator.group.DefaultGroup; import com.epmet.commons.tools.validator.group.UpdateGroup; +import com.epmet.constants.ImportTaskConstants; import com.epmet.dto.IcCommunitySelfOrganizationDTO; import com.epmet.dto.form.*; import com.epmet.dto.form.demand.ServiceQueryFormDTO; import com.epmet.dto.result.CommunitySelfOrganizationListResultDTO; +import com.epmet.dto.result.ImportTaskCommonResultDTO; import com.epmet.dto.result.demand.OptionDTO; import com.epmet.excel.ExportCommunitySelfOrganizationExcel; import com.epmet.excel.IcCommunitySelfOrganizationExcel; import com.epmet.excel.ImportCommunitySelfOrganizationSon; +import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.service.IcCommunitySelfOrganizationService; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.io.FilenameUtils; @@ -66,6 +69,8 @@ public class IcCommunitySelfOrganizationController { @Autowired private IcCommunitySelfOrganizationService icCommunitySelfOrganizationService; + @Autowired + private EpmetCommonServiceOpenFeignClient commonServiceOpenFeignClient; @GetMapping("page") public Result> page(@RequestParam Map params){ @@ -138,7 +143,7 @@ public class IcCommunitySelfOrganizationController { * @date 2021/11/25 9:03 上午 */ @PostMapping("importcommunityselforganization") - public Result importCommunitySelfOrganization(@LoginUser TokenDto tokenDto, HttpServletResponse response, @RequestPart("file") MultipartFile file) throws Exception { + public void importCommunitySelfOrganization(@LoginUser TokenDto tokenDto, HttpServletResponse response, @RequestPart("file") MultipartFile file) throws Exception { if (file.isEmpty()) { throw new RenException("请上传文件"); } @@ -148,8 +153,17 @@ public class IcCommunitySelfOrganizationController { if (!"xls".equals(extension) && !"xlsx".equals(extension)) { throw new RenException("文件类型不匹配"); } - icCommunitySelfOrganizationService.importCommunitySelfOrganization(tokenDto, response, file); - return new Result(); + //1.查询当前工作人员是否有再导入的党员先锋数据,有则不允许导入,没有则进行新的导入 + ImportTaskCommonFormDTO importTaskForm = new ImportTaskCommonFormDTO(); + importTaskForm.setOriginFileName(file.getOriginalFilename()); + importTaskForm.setOperatorId(tokenDto.getUserId()); + importTaskForm.setBizType(ImportTaskConstants.BIZ_TYPE_COMMUNITY_SELF_ORG); + Result result = commonServiceOpenFeignClient.createImportTask(importTaskForm); + if (!result.success()) { + throw new RenException(result.getInternalMsg()); + } + //2.执行导入程序 + icCommunitySelfOrganizationService.importCommunitySelfOrganization(tokenDto, response, file, result.getData().getTaskId()); } /** diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcCommunitySelfOrganizationDao.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcCommunitySelfOrganizationDao.java index efc9881b2a..e8fc375773 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcCommunitySelfOrganizationDao.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcCommunitySelfOrganizationDao.java @@ -18,6 +18,7 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.IcCommunitySelfOrganizationDTO; import com.epmet.dto.form.CommunitySelfOrganizationListFormDTO; import com.epmet.dto.result.CommunitySelfOrganizationListDTO; import com.epmet.dto.result.demand.OptionDTO; @@ -63,5 +64,5 @@ public interface IcCommunitySelfOrganizationDao extends BaseDao selectOrgByOrgName(@Param("names")List names, @Param("customerId") String customerId); - + List selectOrgByCustomerId(@Param("customerId") String customerId); } \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcCommunitySelfOrganizationService.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcCommunitySelfOrganizationService.java index 9f8c8f4682..ab97e36e84 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcCommunitySelfOrganizationService.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcCommunitySelfOrganizationService.java @@ -157,7 +157,7 @@ public interface IcCommunitySelfOrganizationService extends BaseService queryListById(List communityOrgIds); } \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcCommunitySelfOrganizationServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcCommunitySelfOrganizationServiceImpl.java index 5176518aa2..663461c62c 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcCommunitySelfOrganizationServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcCommunitySelfOrganizationServiceImpl.java @@ -1,5 +1,7 @@ package com.epmet.service.impl; +import cn.afterturn.easypoi.excel.ExcelExportUtil; +import cn.afterturn.easypoi.excel.entity.ExportParams; import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -12,6 +14,7 @@ import com.epmet.commons.tools.constant.StrConstant; 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.exception.RenException; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.redis.common.CustomerOrgRedis; @@ -21,37 +24,49 @@ 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.ExcelPoiUtils; +import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.PhoneValidatorUtils; import com.epmet.constant.IcCommunitySelfOrganizationConstant; import com.epmet.constant.UserDemandConstant; +import com.epmet.constants.ImportTaskConstants; import com.epmet.dao.IcCommunitySelfOrganizationDao; import com.epmet.dto.IcCommunitySelfOrganizationDTO; -import com.epmet.dto.form.AddCommunitySelfOrganizationFormDTO; -import com.epmet.dto.form.CommunitySelfOrganizationListFormDTO; -import com.epmet.dto.form.DelCommunitySelfOrganizationFormDTO; -import com.epmet.dto.form.EditCommunitySelfOrganizationFormDTO; +import com.epmet.dto.form.*; import com.epmet.dto.form.demand.ServiceQueryFormDTO; import com.epmet.dto.result.CommunitySelfOrganizationListDTO; import com.epmet.dto.result.CommunitySelfOrganizationListResultDTO; +import com.epmet.dto.result.UploadImgResultDTO; import com.epmet.dto.result.demand.OptionDTO; import com.epmet.entity.IcCommunitySelfOrganizationEntity; import com.epmet.entity.IcCommunitySelfOrganizationPersonnelEntity; +import com.epmet.excel.CommunitySelfOrgImportExcel; import com.epmet.excel.ImportCommunitySelfOrganization; +import com.epmet.feign.EpmetCommonServiceOpenFeignClient; +import com.epmet.feign.OssFeignClient; import com.epmet.service.IcCommunitySelfOrganizationPersonnelService; import com.epmet.service.IcCommunitySelfOrganizationService; import com.epmet.service.IcUserDemandRecService; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.fileupload.FileItem; +import org.apache.commons.fileupload.FileItemFactory; +import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.lang3.StringUtils; +import org.apache.http.entity.ContentType; +import org.apache.poi.ss.usermodel.Workbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.commons.CommonsMultipartFile; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.io.OutputStream; import java.util.*; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; @@ -64,12 +79,17 @@ import static com.epmet.commons.tools.utils.DateUtils.DATE_PATTERN; * @since v1.0.0 2021-11-18 */ @Service +@Slf4j public class IcCommunitySelfOrganizationServiceImpl extends BaseServiceImpl implements IcCommunitySelfOrganizationService { @Autowired private IcCommunitySelfOrganizationPersonnelService personnelService; @Autowired private IcUserDemandRecService icUserDemandRecService; + @Autowired + private OssFeignClient ossFeignClient; + @Autowired + private EpmetCommonServiceOpenFeignClient commonServiceOpenFeignClient; @Override public PageData page(Map params) { @@ -362,9 +382,9 @@ public class IcCommunitySelfOrganizationServiceImpl extends BaseServiceImpl testExcelImportResult = ExcelPoiUtils.importExcelMore(file, 0, 2, ImportCommunitySelfOrganization.class); List list = testExcelImportResult.getList(); @@ -446,6 +466,172 @@ public class IcCommunitySelfOrganizationServiceImpl extends BaseServiceImpl fileList = new ArrayList<>(); + CommunitySelfOrgImportExcel excel = null; + //1.读取Excel数据 + ExcelImportResult testExcelImportResult = ExcelPoiUtils.importExcelMore(file, 0, 2, ImportCommunitySelfOrganization.class); + //2.存在错误行数据时存入错误数据集合中 + for (ImportCommunitySelfOrganization entity : testExcelImportResult.getFailList()) { + //打印失败的行 和失败的信息 + log.warn("第{}行,{}", entity.getRowNum(), entity.getErrorMsg()); + excel = new CommunitySelfOrgImportExcel(); + excel.setAgencyName(entity.getOrganizationName()); + excel.setSocietyName(entity.getOrganizationName()); + excel.setErrorInfo(entity.getErrorMsg()); + fileList.add(excel); + } + //正确行数据集合 + List list = testExcelImportResult.getList(); + if (CollectionUtils.isNotEmpty(list)){ + //3.分别判断导入数据是否是当前组织下数据、社会自组织名称是否已存在、手机号是否规范 + //3-1.查询当前组织下已从存在的社会自组织名称 + CustomerStaffInfoCacheResult staffInfoCache = CustomerStaffRedis.getStaffInfo(tokenDto.getCustomerId(), tokenDto.getUserId()); + //查询当前组织下的社会自组织数据 + List communitySeltOrgList = baseDao.selectOrgByCustomerId(tokenDto.getCustomerId()); + //组织信息 + AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(staffInfoCache.getAgencyId()); + //3-2.检验数据,把不允许导入的数据剔除 + Iterator iterator = list.iterator(); + while (iterator.hasNext()) { + AtomicBoolean bl = new AtomicBoolean(false); + StringBuffer errMsg = new StringBuffer(""); + ImportCommunitySelfOrganization obj = iterator.next(); + //社会自组织名称重复 + communitySeltOrgList.forEach(org -> { + if (obj.getOrganizationName().equals(org.getOrganizationName())) { + log.warn(String.format("当前客户下的社会自组织名称已存在,社会自组织名称->%s,行号->%s", obj.getOrganizationName(), obj.getRowNum())); + errMsg.append("客户下社会自组织名称已存在;"); + bl.set(true); + } + }); + //手机号不合规 + boolean m = PhoneValidatorUtils.isMobile(obj.getPrincipalPhone()); + boolean t = PhoneValidatorUtils.isTel(obj.getPrincipalPhone()); + if (!m && !t){ + errMsg.append("手机号码不合法;"); + bl.set(true); + } + if(bl.get()){ + excel = new CommunitySelfOrgImportExcel(); + excel.setAgencyName(obj.getOrganizationName()); + excel.setSocietyName(obj.getOrganizationName()); + excel.setErrorInfo(errMsg.toString()); + fileList.add(excel); + iterator.remove(); + } + } + + list.forEach(l -> { + IcCommunitySelfOrganizationEntity e = ConvertUtils.sourceToTarget(l, IcCommunitySelfOrganizationEntity.class); + e.setCustomerId(tokenDto.getCustomerId()); + e.setOrgId(agencyInfo.getId()); + e.setOrgType(IcCommunitySelfOrganizationConstant.ORG_TYPE_AGENCY); + e.setPid(agencyInfo.getPid()); + e.setPids(agencyInfo.getPids()); + e.setOrganizationCreatedTime(l.getOrganizationCreatedTime()); + baseDao.insert(e); + if (CollectionUtils.isNotEmpty(l.getPersons())){ + l.getPersons().forEach(p -> { + boolean m = PhoneValidatorUtils.isMobile(p.getPersonPhone()); + boolean t = PhoneValidatorUtils.isTel(p.getPersonPhone()); + if (!m && !t){ + throw new EpmetException(EpmetErrorCode.CHECK_PHONE_ERROR.getCode()); + } + }); + List persons = ConvertUtils.sourceToTarget(l.getPersons(), IcCommunitySelfOrganizationPersonnelEntity.class); + Map> groupByPhone = persons.stream().collect(Collectors.groupingBy(IcCommunitySelfOrganizationPersonnelEntity::getPersonPhone)); + List phones = new ArrayList<>(); + groupByPhone.forEach((k,v) -> { + if (v.size() > NumConstant.ONE){ + phones.add(k); + } + }); + if (CollectionUtils.isNotEmpty(phones)){ + StringBuffer sb = new StringBuffer(); + phones.forEach(p -> { + sb.append(p).append(","); + }); + String copywriter = sb.toString().substring(NumConstant.ZERO, sb.length() - NumConstant.ONE); + EpmetErrorCode.EXISTS_SAME_PHONE_ERROR.setMsg(String.format(EpmetErrorCode.EXISTS_SAME_PHONE_ERROR.getMsg(),copywriter)); + throw new RenException(EpmetErrorCode.EXISTS_SAME_PHONE_ERROR.getCode()); + } + persons.forEach(p -> { + p.setCustomerId(tokenDto.getCustomerId()); + p.setOrgId(e.getId()); + }); + personnelService.insertBatch(persons); + } + }); + } + //4.错误数据生成文件,修改导入任务状态 + erroeImport(fileList, taskId, tokenDto.getUserId()); + } + /** + * @Author sun + * @Description 社会自组织导入导入,错误数据生成导入失败文件存到阿里云,修改导入任务为已结束 + **/ + private void erroeImport(List fileList, String importTaskId, String staffId) throws IOException { + String url = ""; + //1.有错误数据则生成错误数据存放文件传到阿里云服务 + if (!org.springframework.util.CollectionUtils.isEmpty(fileList)) { + Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("导入失败的数据列表", "导入失败的数据列表"), + CommunitySelfOrgImportExcel.class, fileList); + + // 文件名 + String resultDescFileName = UUID.randomUUID().toString().concat(".xlsx"); + FileItemFactory factory = new DiskFileItemFactory(16, null); + FileItem fileItem = factory.createItem("file", ContentType.APPLICATION_OCTET_STREAM.toString(), true, resultDescFileName); + OutputStream os = fileItem.getOutputStream(); + Result uploadResult = null; + try { + workbook.write(os); + uploadResult = ossFeignClient.uploadImportTaskDescFile(new CommonsMultipartFile(fileItem)); + } catch (Exception e) { + String errormsg = ExceptionUtils.getErrorStackTrace(e); + log.error("【社会自组织信息导入】上传错误描述文件:{}", errormsg); + } finally { + try { + os.close(); + } catch (IOException e) { + String errormsg = ExceptionUtils.getErrorStackTrace(e); + log.error("【社会自组织信息导入】上传错误描述文件关闭输出流:{}", errormsg); + } + try { + fileItem.delete(); + } catch (Exception e) { + String errormsg = ExceptionUtils.getErrorStackTrace(e); + log.error("【社会自组织信息导入】上传错误描述文件删除临时文件:{}", errormsg); + } + } + + if (uploadResult == null || !uploadResult.success()) { + log.error("【社会自组织信息导入】调用OSS上传结果描述文件失败"); + } + url = uploadResult.getData().getUrl(); + } + //2.更新导入任务数据 + ImportTaskCommonFormDTO importTaskForm = new ImportTaskCommonFormDTO(); + importTaskForm.setOperatorId(staffId); + importTaskForm.setBizType(ImportTaskConstants.BIZ_TYPE_PARTY_MEMBER); + importTaskForm.setTaskId(importTaskId); + importTaskForm.setResultDescFilePath(url); + importTaskForm.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_SUCCESS); + if (StringUtils.isNotBlank(url)) { + importTaskForm.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL); + importTaskForm.setResultDesc("社会自组织导入存在错误数据"); + } + Result result = commonServiceOpenFeignClient.finishImportTask(importTaskForm); + if (!result.success()) { + throw new RenException(result.getInternalMsg()); + } + } @Override public List queryListById(List communityOrgIds) { diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcCommunitySelfOrganizationDao.xml b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcCommunitySelfOrganizationDao.xml index fc1a118ced..d2575e0af0 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcCommunitySelfOrganizationDao.xml +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcCommunitySelfOrganizationDao.xml @@ -97,4 +97,18 @@ #{n} + + + \ No newline at end of file diff --git a/epmet-module/resi-partymember/resi-partymember-server/pom.xml b/epmet-module/resi-partymember/resi-partymember-server/pom.xml index 4c7c11b2fd..462586a0b6 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/pom.xml +++ b/epmet-module/resi-partymember/resi-partymember-server/pom.xml @@ -93,6 +93,18 @@ 2.0.0 compile + + com.epmet + common-service-client + 2.0.0 + compile + + + com.epmet + epmet-oss-client + 2.0.0 + compile + diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartymemberStyleController.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartymemberStyleController.java index ee3a025d13..4f41645000 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartymemberStyleController.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartymemberStyleController.java @@ -20,6 +20,7 @@ package com.epmet.modules.partymember.controller; 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.RenException; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.ExcelUtils; @@ -27,6 +28,10 @@ import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.commons.tools.validator.group.AddGroup; import com.epmet.commons.tools.validator.group.DefaultGroup; +import com.epmet.constants.ImportTaskConstants; +import com.epmet.dto.form.ImportTaskCommonFormDTO; +import com.epmet.dto.result.ImportTaskCommonResultDTO; +import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.modules.partymember.excel.IcPartymemberStyleExcel; import com.epmet.modules.partymember.service.IcPartymemberStyleService; import com.epmet.resi.partymember.dto.partymember.IcPartymemberStyleDTO; @@ -34,6 +39,7 @@ import com.epmet.resi.partymember.dto.partymember.form.PartyMemberStyleFormDTO; import com.epmet.resi.partymember.dto.partymember.form.StyleShowListFormDTO; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.io.FilenameUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -60,6 +66,8 @@ public class IcPartymemberStyleController { @Autowired private IcPartymemberStyleService icPartymemberStyleService; + @Autowired + private EpmetCommonServiceOpenFeignClient commonServiceOpenFeignClient; @GetMapping("page") public Result> page(@RequestParam Map params){ @@ -116,8 +124,23 @@ public class IcPartymemberStyleController { } @PostMapping("import") - public Result importData(@LoginUser TokenDto tokenDto, HttpServletResponse response, @RequestPart("file") MultipartFile file) throws IOException { - return icPartymemberStyleService.importData(tokenDto, response, file); + public void importData(@LoginUser TokenDto tokenDto, HttpServletResponse response, @RequestPart("file") MultipartFile file) throws IOException { + // 校验文件类型 + String extension = FilenameUtils.getExtension(file.getOriginalFilename()); + if (!"xls".equals(extension) && !"xlsx".equals(extension)) { + throw new RenException("文件类型不匹配"); + } + //1.查询当前工作人员是否有再导入的党员先锋数据,有则不允许导入,没有则进行新的导入 + ImportTaskCommonFormDTO importTaskForm = new ImportTaskCommonFormDTO(); + importTaskForm.setOriginFileName(file.getOriginalFilename()); + importTaskForm.setOperatorId(tokenDto.getUserId()); + importTaskForm.setBizType(ImportTaskConstants.BIZ_TYPE_PARTY_MEMBER); + Result result = commonServiceOpenFeignClient.createImportTask(importTaskForm); + if (!result.success()) { + throw new RenException(result.getInternalMsg()); + } + //2.执行导入程序 + icPartymemberStyleService.importData(tokenDto, response, file, result.getData().getTaskId()); } /** diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartymemberStyleService.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartymemberStyleService.java index 1baf248479..533cb59262 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartymemberStyleService.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartymemberStyleService.java @@ -108,7 +108,7 @@ public interface IcPartymemberStyleService extends BaseService page(Map params) { @@ -233,7 +255,9 @@ public class IcPartymemberStyleServiceImpl extends BaseServiceImpl fileList = new ArrayList<>(); + PartyMemberImportExcel excel = null; ExcelImportResult importResult = ExcelPoiUtils.importExcelMore(file, 0, 1, IcPartymemberStyleImportExcel.class); List failList = importResult.getFailList(); @@ -244,6 +268,13 @@ public class IcPartymemberStyleServiceImpl extends BaseServiceImpl result = importResult.getList(); @@ -267,19 +298,35 @@ public class IcPartymemberStyleServiceImpl extends BaseServiceImpl%s,行号->%s", obj.getGridName(), obj.getRowNum())); + excel = new PartyMemberImportExcel(); + excel.setGridName(obj.getGridName()); + excel.setName(obj.getName()); + excel.setMainDeed(obj.getMainDeed()); + excel.setCategoryName(obj.getCategoryName()); + excel.setErrorInfo("不是当前组织下网格"); + fileList.add(excel); iterator.remove(); continue; } if (null == categoryDictMap.get(obj.getCategoryName().trim())) { numList.add(obj.getRowNum()); log.warn(String.format("分类名称【%s】不存在,不可导入,行号->%s", obj.getCategoryName(), obj.getRowNum())); + excel = new PartyMemberImportExcel(); + excel.setGridName(obj.getGridName()); + excel.setName(obj.getName()); + excel.setMainDeed(obj.getMainDeed()); + excel.setCategoryName(obj.getCategoryName()); + excel.setErrorInfo("分类名称不存在"); + fileList.add(excel); iterator.remove(); } } if (CollectionUtils.isEmpty(result)) { - Collections.sort(numList); + /*Collections.sort(numList); String subList = numList.stream().map(String::valueOf).collect(Collectors.joining("、")); - return new Result().error(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "第" + subList + "行未成功!"); + return new Result().error(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "第" + subList + "行未成功!");*/ + erroeImport(fileList, taskId, tokenDto.getUserId()); + return; } List imageList = new ArrayList<>(); List list = result.stream().map(item -> { @@ -304,14 +351,75 @@ public class IcPartymemberStyleServiceImpl extends BaseServiceImpl NumConstant.ZERO) { Collections.sort(numList); String subList = numList.stream().map(String::valueOf).collect(Collectors.joining("、")); log.warn(str + "第" + subList + "行未成功!"); return new Result().error(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), str + "第" + subList + "行未成功!"); } - return new Result().ok(str); + return new Result().ok(str);*/ + erroeImport(fileList, taskId, tokenDto.getUserId()); + } + + /** + * @Author sun + * @Description 党员风采导入,错误数据生成导入失败文件,修改导入任务为已结束 + **/ + private void erroeImport(List fileList, String importTaskId, String staffId) throws IOException { + String url = ""; + //1.有错误数据则生成错误数据存放文件传到阿里云服务 + if (!org.springframework.util.CollectionUtils.isEmpty(fileList)) { + Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("导入失败的数据列表", "导入失败的数据列表"), + PartyMemberImportExcel.class, fileList); + + // 文件名 + String resultDescFileName = UUID.randomUUID().toString().concat(".xlsx"); + FileItemFactory factory = new DiskFileItemFactory(16, null); + FileItem fileItem = factory.createItem("file", ContentType.APPLICATION_OCTET_STREAM.toString(), true, resultDescFileName); + OutputStream os = fileItem.getOutputStream(); + Result uploadResult = null; + try { + workbook.write(os); + uploadResult = ossFeignClient.uploadImportTaskDescFile(new CommonsMultipartFile(fileItem)); + } catch (Exception e) { + String errormsg = ExceptionUtils.getErrorStackTrace(e); + log.error("【党员风采信息导入】上传错误描述文件:{}", errormsg); + } finally { + try { + os.close(); + } catch (IOException e) { + String errormsg = ExceptionUtils.getErrorStackTrace(e); + log.error("【党员风采信息导入】上传错误描述文件关闭输出流:{}", errormsg); + } + try { + fileItem.delete(); + } catch (Exception e) { + String errormsg = ExceptionUtils.getErrorStackTrace(e); + log.error("【党员风采信息导入】上传错误描述文件删除临时文件:{}", errormsg); + } + } + + if (uploadResult == null || !uploadResult.success()) { + log.error("【党员风采信息导入】调用OSS上传结果描述文件失败"); + } + url = uploadResult.getData().getUrl(); + } + //2.更新导入任务数据 + ImportTaskCommonFormDTO importTaskForm = new ImportTaskCommonFormDTO(); + importTaskForm.setOperatorId(staffId); + importTaskForm.setBizType(ImportTaskConstants.BIZ_TYPE_PARTY_MEMBER); + importTaskForm.setTaskId(importTaskId); + importTaskForm.setResultDescFilePath(url); + importTaskForm.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_SUCCESS); + if (StringUtils.isNotBlank(url)) { + importTaskForm.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL); + importTaskForm.setResultDesc("党员风采导入存在错误数据"); + } + Result result = commonServiceOpenFeignClient.finishImportTask(importTaskForm); + if (!result.success()) { + throw new RenException(result.getInternalMsg()); + } } /** From ac8f0ef67c7ec6f10d37b979247db17d3329a087 Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Tue, 22 Feb 2022 15:39:56 +0800 Subject: [PATCH 021/115] =?UTF-8?q?=E8=81=94=E5=BB=BA=E6=B4=BB=E5=8A=A8?= =?UTF-8?q?=E5=85=B3=E8=81=94=E5=A4=9A=E4=B8=AA=E5=8D=95=E4=BD=8D=E5=92=8C?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E4=BA=8B=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/form/work/DraftActInfoFormDTO.java | 3 +- .../dto/form/work/PublishActInfoFormDTO.java | 12 +- .../epmet/dto/form/work/RePublishFormDTO.java | 11 +- .../dto/result/work/ActPreviewResultDTO.java | 12 +- .../work/CanceledActDetailResultDTO.java | 4 + .../work/FinishedActDetailResultDTO.java | 4 + .../work/InProgressActDetailResultDTO.java | 4 + .../result/work/ReEditActInfoResultDTO.java | 4 + .../LatestActServiceRelationEntity.java | 10 - .../entity/LatestActUnitRelationEntity.java | 10 - .../LatestActServiceRelationService.java | 20 ++ .../service/LatestActUnitRelationService.java | 21 ++ .../LatestActServiceRelationServiceImpl.java | 42 ++++ .../LatestActUnitRelationServiceImpl.java | 42 ++++ .../service/impl/WorkActDraftServiceImpl.java | 54 ++++- .../service/impl/WorkActServiceImpl.java | 190 +++++++++++++----- .../resources/mapper/LatestActInfoDao.xml | 3 + 17 files changed, 365 insertions(+), 81 deletions(-) diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/DraftActInfoFormDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/DraftActInfoFormDTO.java index f00ebe792f..a88d1d393f 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/DraftActInfoFormDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/DraftActInfoFormDTO.java @@ -170,7 +170,7 @@ public class DraftActInfoFormDTO implements Serializable { * 联建单位 */ private String unitId; - + private List unitIdList; /** * 活动目标 */ @@ -180,5 +180,6 @@ public class DraftActInfoFormDTO implements Serializable { * 服务事项 */ private String serviceMatter; + private List serviceMatterList; } diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/PublishActInfoFormDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/PublishActInfoFormDTO.java index ef1f3c3e19..099fa38e60 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/PublishActInfoFormDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/PublishActInfoFormDTO.java @@ -5,10 +5,7 @@ import lombok.Data; import org.hibernate.validator.constraints.Length; import javax.validation.Valid; -import javax.validation.constraints.Min; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; -import javax.validation.constraints.Size; +import javax.validation.constraints.*; import java.io.Serializable; import java.math.BigDecimal; import java.util.List; @@ -200,9 +197,9 @@ public class PublishActInfoFormDTO implements Serializable { /** * 联建单位 */ - @NotBlank(message = "联建单位不能为空", groups = {AddPartyActivityGroup.class}) private String unitId; - + @NotEmpty(message = "联建单位不能为空", groups = {AddPartyActivityGroup.class}) + private List unitIdList; /** * 活动目标 */ @@ -212,6 +209,7 @@ public class PublishActInfoFormDTO implements Serializable { /** * 服务事项 */ - @NotBlank(message = "服务事项不能为空", groups = {AddPartyActivityGroup.class}) private String serviceMatter; + @NotEmpty(message = "服务事项不能为空", groups = {AddPartyActivityGroup.class}) + private List serviceMatterList; } diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/RePublishFormDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/RePublishFormDTO.java index b093e9dcba..587a60a0ff 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/RePublishFormDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/RePublishFormDTO.java @@ -5,10 +5,7 @@ import lombok.Data; import org.hibernate.validator.constraints.Length; import javax.validation.Valid; -import javax.validation.constraints.Min; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; -import javax.validation.constraints.Size; +import javax.validation.constraints.*; import java.io.Serializable; import java.math.BigDecimal; import java.util.List; @@ -206,8 +203,9 @@ public class RePublishFormDTO implements Serializable { /** * 联建单位 */ - @NotBlank(message = "联建单位不能为空", groups = {AddPartyActivityGroup.class}) private String unitId; + @NotEmpty(message = "联建单位不能为空", groups = {PublishActInfoFormDTO.AddPartyActivityGroup.class}) + private List unitIdList; /** * 活动目标 @@ -218,6 +216,7 @@ public class RePublishFormDTO implements Serializable { /** * 服务事项 */ - @NotBlank(message = "服务事项不能为空", groups = {AddPartyActivityGroup.class}) private String serviceMatter; + @NotEmpty(message = "服务事项不能为空", groups = {PublishActInfoFormDTO.AddPartyActivityGroup.class}) + private List serviceMatterList; } diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/ActPreviewResultDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/ActPreviewResultDTO.java index 5e3df9d139..caeed480d5 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/ActPreviewResultDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/ActPreviewResultDTO.java @@ -1,6 +1,7 @@ package com.epmet.dto.result.work; import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; import java.io.Serializable; @@ -74,7 +75,12 @@ public class ActPreviewResultDTO implements Serializable { * 主办方名称 */ private String sponsorName; - + @JsonIgnore + private String sponsorType; + @JsonIgnore + private String sponsorId; + @JsonIgnore + private String pid; /** * 联系人 */ @@ -100,6 +106,8 @@ public class ActPreviewResultDTO implements Serializable { */ private String unitId; private String unitName; + private List unitIdList; + private List unitNameList; /** * 活动目标 */ @@ -110,4 +118,6 @@ public class ActPreviewResultDTO implements Serializable { */ private String serviceMatter; private String serviceMatterName; + private List serviceMatterList; + private List serviceMatterNameList; } diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/CanceledActDetailResultDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/CanceledActDetailResultDTO.java index 3da7fade52..764d3ffabf 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/CanceledActDetailResultDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/CanceledActDetailResultDTO.java @@ -158,6 +158,8 @@ public class CanceledActDetailResultDTO implements Serializable { */ private String unitId; private String unitName; + private List unitIdList; + private List unitNameList; /** * 活动目标 */ @@ -168,4 +170,6 @@ public class CanceledActDetailResultDTO implements Serializable { */ private String serviceMatter; private String serviceMatterName; + private List serviceMatterList; + private List serviceMatterNameList; } diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/FinishedActDetailResultDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/FinishedActDetailResultDTO.java index 3e4bfbdc9a..5bf9c4bfb1 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/FinishedActDetailResultDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/FinishedActDetailResultDTO.java @@ -147,6 +147,8 @@ public class FinishedActDetailResultDTO implements Serializable { */ private String unitId; private String unitName; + private List unitIdList; + private List unitNameList; /** * 活动目标 */ @@ -157,4 +159,6 @@ public class FinishedActDetailResultDTO implements Serializable { */ private String serviceMatter; private String serviceMatterName; + private List serviceMatterList; + private List serviceMatterNameList; } diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/InProgressActDetailResultDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/InProgressActDetailResultDTO.java index 8dc4ad2fb2..03fdbf576b 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/InProgressActDetailResultDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/InProgressActDetailResultDTO.java @@ -142,6 +142,8 @@ public class InProgressActDetailResultDTO implements Serializable { */ private String unitId; private String unitName; + private List unitIdList; + private List unitNameList; /** * 活动目标 */ @@ -152,4 +154,6 @@ public class InProgressActDetailResultDTO implements Serializable { */ private String serviceMatter; private String serviceMatterName; + private List serviceMatterList; + private List serviceMatterNameList; } diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/ReEditActInfoResultDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/ReEditActInfoResultDTO.java index a360fd53c3..367ab0ec1d 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/ReEditActInfoResultDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/ReEditActInfoResultDTO.java @@ -159,6 +159,8 @@ public class ReEditActInfoResultDTO implements Serializable { */ private String unitId; private String unitName; + private List unitIdList; + private List unitNameList; /** * 活动目标 */ @@ -169,4 +171,6 @@ public class ReEditActInfoResultDTO implements Serializable { */ private String serviceMatter; private String serviceMatterName; + private List serviceMatterList; + private List serviceMatterNameList; } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/LatestActServiceRelationEntity.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/LatestActServiceRelationEntity.java index a7d81ad2c1..20e20de39b 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/LatestActServiceRelationEntity.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/LatestActServiceRelationEntity.java @@ -23,16 +23,6 @@ public class LatestActServiceRelationEntity extends BaseEpmetEntity { */ private String customerId; - /** - * 组织ID - */ - private String agencyId; - - /** - * 组织的所有上级 - */ - private String pids; - /** * latest_act_info表ID */ diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/LatestActUnitRelationEntity.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/LatestActUnitRelationEntity.java index 4940c49cd3..d386197d79 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/LatestActUnitRelationEntity.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/LatestActUnitRelationEntity.java @@ -23,16 +23,6 @@ public class LatestActUnitRelationEntity extends BaseEpmetEntity { */ private String customerId; - /** - * 组织ID - */ - private String agencyId; - - /** - * 组织的所有上级 - */ - private String pids; - /** * latest_act_info表ID */ diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/LatestActServiceRelationService.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/LatestActServiceRelationService.java index e400a6d1ab..d5274af182 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/LatestActServiceRelationService.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/LatestActServiceRelationService.java @@ -3,6 +3,8 @@ package com.epmet.service; import com.epmet.commons.mybatis.service.BaseService; import com.epmet.entity.LatestActServiceRelationEntity; +import java.util.List; + /** * 联建活动与服务事项关联表 * @@ -10,5 +12,23 @@ import com.epmet.entity.LatestActServiceRelationEntity; * @since v1.0.0 2022-02-21 */ public interface LatestActServiceRelationService extends BaseService { + /** + * 获取活动所属服务事项列表 + * + * @Param actId + * @Return {@link List < String>} + * @Author zhaoqifeng + * @Date 2022/2/22 14:53 + */ + List getServiceMatterList(String actId); + /** + * 删除活动所属服务事项 + * + * @Param actId + * @Return + * @Author zhaoqifeng + * @Date 2022/2/22 14:54 + */ + void deleteByAct(String actId); } \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/LatestActUnitRelationService.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/LatestActUnitRelationService.java index 5da8fb584b..bcfa1bfb82 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/LatestActUnitRelationService.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/LatestActUnitRelationService.java @@ -3,6 +3,8 @@ package com.epmet.service; import com.epmet.commons.mybatis.service.BaseService; import com.epmet.entity.LatestActUnitRelationEntity; +import java.util.List; + /** * 联建活动与单位关联表 * @@ -10,5 +12,24 @@ import com.epmet.entity.LatestActUnitRelationEntity; * @since v1.0.0 2022-02-21 */ public interface LatestActUnitRelationService extends BaseService { + /** + * 获取活动所属联建单位列表 + * + * @Param actId + * @Return {@link List< String>} + * @Author zhaoqifeng + * @Date 2022/2/22 14:53 + */ + List getUnitList(String actId); + + /** + * 删除活动所属单位列表 + * + * @Param actId + * @Return + * @Author zhaoqifeng + * @Date 2022/2/22 14:54 + */ + void deleteByAct(String actId); } \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/LatestActServiceRelationServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/LatestActServiceRelationServiceImpl.java index 611207bd98..3575719a68 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/LatestActServiceRelationServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/LatestActServiceRelationServiceImpl.java @@ -1,10 +1,17 @@ package com.epmet.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.dao.LatestActServiceRelationDao; import com.epmet.entity.LatestActServiceRelationEntity; import com.epmet.service.LatestActServiceRelationService; +import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; /** * 联建活动与服务事项关联表 @@ -16,4 +23,39 @@ import org.springframework.stereotype.Service; public class LatestActServiceRelationServiceImpl extends BaseServiceImpl implements LatestActServiceRelationService { + /** + * 获取活动所属服务事项列表 + * + * @param actId + * @Param actId + * @Return {@link List < String>} + * @Author zhaoqifeng + * @Date 2022/2/22 14:53 + */ + @Override + public List getServiceMatterList(String actId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(LatestActServiceRelationEntity::getActId, actId); + wrapper.orderByAsc(LatestActServiceRelationEntity::getSort); + List list = baseDao.selectList(wrapper); + if (CollectionUtils.isEmpty(list)) { + return Collections.emptyList(); + } + return list.stream().map(LatestActServiceRelationEntity::getServiceMatter).collect(Collectors.toList()); + } + + /** + * 删除活动所属服务事项 + * + * @param actId + * @Param actId + * @Return + * @Author zhaoqifeng + * @Date 2022/2/22 14:54 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteByAct(String actId) { + baseDao.deleteByActivity(actId); + } } \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/LatestActUnitRelationServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/LatestActUnitRelationServiceImpl.java index aee966d2ea..0614854d87 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/LatestActUnitRelationServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/LatestActUnitRelationServiceImpl.java @@ -1,10 +1,17 @@ package com.epmet.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.dao.LatestActUnitRelationDao; import com.epmet.entity.LatestActUnitRelationEntity; import com.epmet.service.LatestActUnitRelationService; +import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; /** * 联建活动与单位关联表 @@ -16,4 +23,39 @@ import org.springframework.stereotype.Service; public class LatestActUnitRelationServiceImpl extends BaseServiceImpl implements LatestActUnitRelationService { + /** + * 获取活动所属联建单位列表 + * + * @param actId + * @Param actId + * @Return {@link List < String>} + * @Author zhaoqifeng + * @Date 2022/2/22 14:53 + */ + @Override + public List getUnitList(String actId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(LatestActUnitRelationEntity::getActId, actId); + wrapper.orderByAsc(LatestActUnitRelationEntity::getSort); + List list = baseDao.selectList(wrapper); + if (CollectionUtils.isEmpty(list)) { + return Collections.emptyList(); + } + return list.stream().map(LatestActUnitRelationEntity::getUnitId).collect(Collectors.toList()); + } + + /** + * 删除活动所属单位列表 + * + * @param actId + * @Param actId + * @Return + * @Author zhaoqifeng + * @Date 2022/2/22 14:54 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteByAct(String actId) { + baseDao.deleteByActivity(actId); + } } \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkActDraftServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkActDraftServiceImpl.java index 5572a48f48..4739cff8fe 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkActDraftServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkActDraftServiceImpl.java @@ -1,8 +1,10 @@ package com.epmet.service.impl; +import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.security.user.LoginUserUtil; import com.epmet.commons.tools.utils.DateUtils; +import com.epmet.constant.ActConstant; import com.epmet.dto.IcPartyUnitDTO; import com.epmet.dto.LatestActContentDTO; import com.epmet.dto.LatestActInfoDTO; @@ -11,6 +13,8 @@ import com.epmet.dto.form.work.DraftActContentFormDTO; import com.epmet.dto.form.work.DraftActInfoFormDTO; import com.epmet.dto.result.demand.OptionDTO; import com.epmet.dto.result.work.*; +import com.epmet.entity.LatestActServiceRelationEntity; +import com.epmet.entity.LatestActUnitRelationEntity; import com.epmet.service.*; import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.LogManager; @@ -24,6 +28,7 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; +import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; /** @@ -45,7 +50,10 @@ public class WorkActDraftServiceImpl implements WorkActDraftService { private IcServiceItemDictService icServiceItemDictService; @Resource private IcPartyUnitService icPartyUnitService; - + @Resource + private LatestActServiceRelationService latestActServiceRelationService; + @Resource + private LatestActUnitRelationService latestActUnitRelationService; /** * @return com.epmet.dto.form.work.PublishActInitResultDTO @@ -116,6 +124,32 @@ public class WorkActDraftServiceImpl implements WorkActDraftService { } SaveActDraftResultDTO resultDTO=new SaveActDraftResultDTO(); resultDTO.setActDraftId(actDraftId); + + //保存活动与服务关系 + latestActServiceRelationService.deleteByAct(actDraftId); + AtomicInteger i = new AtomicInteger(NumConstant.ONE); + List serviceList = formDTO.getServiceMatterList().stream().map(service -> { + LatestActServiceRelationEntity entity = new LatestActServiceRelationEntity(); + entity.setCustomerId(formDTO.getCustomerId()); + entity.setActId(actDraftId); + entity.setServiceMatter(service); + entity.setSort(i.getAndIncrement()); + return entity; + }).collect(Collectors.toList()); + latestActServiceRelationService.insertBatch(serviceList); + + //保存活动与单位关系 + latestActUnitRelationService.deleteByAct(actDraftId); + AtomicInteger j = new AtomicInteger(NumConstant.ONE); + List unitList = formDTO.getUnitIdList().stream().map(unitId -> { + LatestActUnitRelationEntity entity = new LatestActUnitRelationEntity(); + entity.setCustomerId(formDTO.getCustomerId()); + entity.setActId(actDraftId); + entity.setUnitId(unitId); + entity.setSort(j.getAndIncrement()); + return entity; + }).collect(Collectors.toList()); + latestActUnitRelationService.insertBatch(unitList); return resultDTO; } @@ -146,6 +180,24 @@ public class WorkActDraftServiceImpl implements WorkActDraftService { IcPartyUnitDTO unitDTO = icPartyUnitService.get(actPreviewResultDTO.getUnitId()); actPreviewResultDTO.setUnitName(unitDTO.getUnitName()); } + if (ActConstant.PARTY.equals(actPreviewResultDTO.getActType())) { + //获取服务事项 + List serviceItemList = icServiceItemDictService.queryDictList(formDTO.getCustomerId()); + Map categoryMap = serviceItemList.stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel)); + List services = latestActServiceRelationService.getServiceMatterList(formDTO.getActDraftId()); + List serviceNames = services.stream().map(categoryMap::get).collect(Collectors.toList()); + actPreviewResultDTO.setServiceMatterList(services); + actPreviewResultDTO.setServiceMatterNameList(serviceNames); + + //获取联建单位 + IcPartyUnitDTO unitDTO = new IcPartyUnitDTO(); + unitDTO.setAgencyId(ActConstant.SPONSOR_AGENCY.equals(actPreviewResultDTO.getSponsorType())?actPreviewResultDTO.getSponsorId():actPreviewResultDTO.getPid()); + Map option = icPartyUnitService.option(unitDTO).stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel)); + List unitIds = latestActUnitRelationService.getUnitList(formDTO.getActDraftId()); + List unitNames = unitIds.stream().map(option::get).collect(Collectors.toList()); + actPreviewResultDTO.setUnitIdList(unitIds); + actPreviewResultDTO.setUnitNameList(unitNames); + } } return actPreviewResultDTO; } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkActServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkActServiceImpl.java index 7b076059b9..31e38f1b01 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkActServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkActServiceImpl.java @@ -33,7 +33,6 @@ import com.epmet.entity.*; import com.epmet.feign.EpmetMessageOpenFeignClient; import com.epmet.feign.GovOrgOpenFeignClient; import com.epmet.service.*; -import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -44,6 +43,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; @@ -102,6 +102,10 @@ public class WorkActServiceImpl implements WorkActService { private IcPartyUnitService icPartyUnitService; @Resource private IcServiceItemDictService icServiceItemDictService; + @Resource + private IcActivityUnitRelationService icActivityUnitRelationService; + @Resource + private IcActivityServiceRelationService icActivityServiceRelationService; /** @@ -232,6 +236,36 @@ public class WorkActServiceImpl implements WorkActService { if (ActConstant.PARTY.equals(formDTO.getActType())) { IcPartyActivityEntity activity = getPartyActivityEntity(formDTO, actInfoEntity); icPartyActivityService.insert(activity); + + //保存活动与单位关系 + icActivityUnitRelationService.deleteByActivity(activity.getId()); + AtomicInteger i = new AtomicInteger(NumConstant.ONE); + List unitRelationList = formDTO.getUnitIdList().stream().map(unitId -> { + IcActivityUnitRelationEntity relation = new IcActivityUnitRelationEntity(); + relation.setCustomerId(activity.getCustomerId()); + relation.setAgencyId(activity.getAgencyId()); + relation.setPids(activity.getPids()); + relation.setActivityId(activity.getId()); + relation.setUnitId(unitId); + relation.setSort(i.getAndIncrement()); + return relation; + }).collect(Collectors.toList()); + icActivityUnitRelationService.insertBatch(unitRelationList); + + //保存活动与服务关系 + icActivityServiceRelationService.deleteByActivity(activity.getId()); + AtomicInteger j = new AtomicInteger(NumConstant.ONE); + List serviceRelationList = formDTO.getServiceMatterList().stream().map(service -> { + IcActivityServiceRelationEntity relation = new IcActivityServiceRelationEntity(); + relation.setCustomerId(activity.getCustomerId()); + relation.setAgencyId(activity.getAgencyId()); + relation.setPids(activity.getPids()); + relation.setActivityId(activity.getId()); + relation.setServiceMatter(service); + relation.setSort(j.getAndIncrement()); + return relation; + }).collect(Collectors.toList()); + icActivityServiceRelationService.insertBatch(serviceRelationList); } return publishActResultDTO; @@ -779,17 +813,26 @@ public class WorkActServiceImpl implements WorkActService { canceledActDetailResultDTO.setIsMyPublish(false); } - if (StringUtils.isNotBlank(canceledActDetailResultDTO.getServiceMatter())) { - //获取服务事项 - List serviceItemList = icServiceItemDictService.queryDictList(customerId); - Map categoryMap = serviceItemList.stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel)); - canceledActDetailResultDTO.setServiceMatterName(MapUtils.isNotEmpty(categoryMap) && categoryMap.containsKey(canceledActDetailResultDTO.getServiceMatter()) ? - categoryMap.get(canceledActDetailResultDTO.getServiceMatter()) : StrConstant.EPMETY_STR); - } - if (StringUtils.isNotBlank(canceledActDetailResultDTO.getUnitId())) { - //获取单位名称 - IcPartyUnitDTO unitDTO = icPartyUnitService.get(canceledActDetailResultDTO.getUnitId()); - canceledActDetailResultDTO.setUnitName(unitDTO.getUnitName()); + if (ActConstant.PARTY.equals(canceledActDetailResultDTO.getActType())) { + IcPartyActivityDTO dto = icPartyActivityService.getActivityByActId(actId); + if (null != dto) { + //获取服务事项 + List serviceItemList = icServiceItemDictService.queryDictList(customerId); + Map categoryMap = serviceItemList.stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel)); + List services = icActivityServiceRelationService.getServiceList(dto.getId()); + List serviceNames = services.stream().map(categoryMap::get).collect(Collectors.toList()); + canceledActDetailResultDTO.setServiceMatterList(services); + canceledActDetailResultDTO.setServiceMatterNameList(serviceNames); + + //获取联建单位 + IcPartyUnitDTO unitDTO = new IcPartyUnitDTO(); + unitDTO.setAgencyId(dto.getAgencyId()); + Map option = icPartyUnitService.option(unitDTO).stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel)); + List unitIds = icActivityUnitRelationService.getUnitList(dto.getId()); + List unitNames = unitIds.stream().map(option::get).collect(Collectors.toList()); + canceledActDetailResultDTO.setUnitIdList(unitIds); + canceledActDetailResultDTO.setUnitNameList(unitNames); + } } } return canceledActDetailResultDTO; @@ -835,17 +878,26 @@ public class WorkActServiceImpl implements WorkActService { }else{ resultDTO.setIsMyPublish(false); } - - if (StringUtils.isNotBlank(resultDTO.getServiceMatter())) { - //获取服务事项 - List serviceItemList = icServiceItemDictService.queryDictList(formDTO.getCustomerId()); - Map categoryMap = serviceItemList.stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel)); - resultDTO.setServiceMatterName(MapUtils.isNotEmpty(categoryMap) && categoryMap.containsKey(resultDTO.getServiceMatter()) ? categoryMap.get(resultDTO.getServiceMatter()) : StrConstant.EPMETY_STR); - } - if (StringUtils.isNotBlank(resultDTO.getUnitId())) { - //获取单位名称 - IcPartyUnitDTO unitDTO = icPartyUnitService.get(resultDTO.getUnitId()); - resultDTO.setUnitName(unitDTO.getUnitName()); + if (ActConstant.PARTY.equals(resultDTO.getActType())) { + IcPartyActivityDTO dto = icPartyActivityService.getActivityByActId(formDTO.getActId()); + if (null != dto) { + //获取服务事项 + List serviceItemList = icServiceItemDictService.queryDictList(formDTO.getCustomerId()); + Map categoryMap = serviceItemList.stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel)); + List services = icActivityServiceRelationService.getServiceList(dto.getId()); + List serviceNames = services.stream().map(categoryMap::get).collect(Collectors.toList()); + resultDTO.setServiceMatterList(services); + resultDTO.setServiceMatterNameList(serviceNames); + + //获取联建单位 + IcPartyUnitDTO unitDTO = new IcPartyUnitDTO(); + unitDTO.setAgencyId(dto.getAgencyId()); + Map option = icPartyUnitService.option(unitDTO).stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel)); + List unitIds = icActivityUnitRelationService.getUnitList(dto.getId()); + List unitNames = unitIds.stream().map(option::get).collect(Collectors.toList()); + resultDTO.setUnitIdList(unitIds); + resultDTO.setUnitNameList(unitNames); + } } } return resultDTO; @@ -915,16 +967,26 @@ public class WorkActServiceImpl implements WorkActService { }else{ resultDTO.setIsMyPublish(false); } - if (StringUtils.isNotBlank(resultDTO.getServiceMatter())) { - //获取服务事项 - List serviceItemList=icServiceItemDictService.queryDictList(customerId); - Map categoryMap=serviceItemList.stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel)); - resultDTO.setServiceMatterName(MapUtils.isNotEmpty(categoryMap) && categoryMap.containsKey(resultDTO.getServiceMatter()) ? categoryMap.get(resultDTO.getServiceMatter()) : StrConstant.EPMETY_STR); - } - if (StringUtils.isNotBlank(resultDTO.getUnitId())) { - //获取单位名称 - IcPartyUnitDTO unitDTO = icPartyUnitService.get(resultDTO.getUnitId()); - resultDTO.setUnitName(unitDTO.getUnitName()); + if (ActConstant.PARTY.equals(resultDTO.getActType())) { + IcPartyActivityDTO dto = icPartyActivityService.getActivityByActId(actId); + if (null != dto) { + //获取服务事项 + List serviceItemList = icServiceItemDictService.queryDictList(customerId); + Map categoryMap = serviceItemList.stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel)); + List services = icActivityServiceRelationService.getServiceList(dto.getId()); + List serviceNames = services.stream().map(categoryMap::get).collect(Collectors.toList()); + resultDTO.setServiceMatterList(services); + resultDTO.setServiceMatterNameList(serviceNames); + + //获取联建单位 + IcPartyUnitDTO unitDTO = new IcPartyUnitDTO(); + unitDTO.setAgencyId(dto.getAgencyId()); + Map option = icPartyUnitService.option(unitDTO).stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel)); + List unitIds = icActivityUnitRelationService.getUnitList(dto.getId()); + List unitNames = unitIds.stream().map(option::get).collect(Collectors.toList()); + resultDTO.setUnitIdList(unitIds); + resultDTO.setUnitNameList(unitNames); + } } } return resultDTO; @@ -1309,16 +1371,26 @@ public class WorkActServiceImpl implements WorkActService { List actContent=actContentDao.selectByActId(actId); resultDTO.setActContent(actContent); - if (StringUtils.isNotBlank(resultDTO.getServiceMatter())) { - //获取服务事项 - List serviceItemList=icServiceItemDictService.queryDictList(customerId); - Map categoryMap=serviceItemList.stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel)); - resultDTO.setServiceMatterName(MapUtils.isNotEmpty(categoryMap) && categoryMap.containsKey(resultDTO.getServiceMatter()) ? categoryMap.get(resultDTO.getServiceMatter()) : StrConstant.EPMETY_STR); - } - if (StringUtils.isNotBlank(resultDTO.getUnitId())) { - //获取单位名称 - IcPartyUnitDTO unitDTO = icPartyUnitService.get(resultDTO.getUnitId()); - resultDTO.setUnitName(unitDTO.getUnitName()); + if (ActConstant.PARTY.equals(resultDTO.getActType())) { + IcPartyActivityDTO dto = icPartyActivityService.getActivityByActId(actId); + if (null != dto) { + //获取服务事项 + List serviceItemList = icServiceItemDictService.queryDictList(customerId); + Map categoryMap = serviceItemList.stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel)); + List services = icActivityServiceRelationService.getServiceList(dto.getId()); + List serviceNames = services.stream().map(categoryMap::get).collect(Collectors.toList()); + resultDTO.setServiceMatterList(services); + resultDTO.setServiceMatterNameList(serviceNames); + + //获取联建单位 + IcPartyUnitDTO unitDTO = new IcPartyUnitDTO(); + unitDTO.setAgencyId(dto.getAgencyId()); + Map option = icPartyUnitService.option(unitDTO).stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel)); + List unitIds = icActivityUnitRelationService.getUnitList(dto.getId()); + List unitNames = unitIds.stream().map(option::get).collect(Collectors.toList()); + resultDTO.setUnitIdList(unitIds); + resultDTO.setUnitNameList(unitNames); + } } return resultDTO; @@ -1438,6 +1510,36 @@ public class WorkActServiceImpl implements WorkActService { IcPartyActivityEntity activity = getPartyActivityEntity(ConvertUtils.sourceToTarget(rePublishFormDTO, PublishActInfoFormDTO.class), newActInfoEntity); activity.setId(activityDTO.getId()); icPartyActivityService.updateById(activity); + + //保存活动与单位关系 + icActivityUnitRelationService.deleteByActivity(activity.getId()); + AtomicInteger i = new AtomicInteger(NumConstant.ONE); + List unitRelationList = rePublishFormDTO.getUnitIdList().stream().map(unitId -> { + IcActivityUnitRelationEntity relation = new IcActivityUnitRelationEntity(); + relation.setCustomerId(activity.getCustomerId()); + relation.setAgencyId(activity.getAgencyId()); + relation.setPids(activity.getPids()); + relation.setActivityId(activity.getId()); + relation.setUnitId(unitId); + relation.setSort(i.getAndIncrement()); + return relation; + }).collect(Collectors.toList()); + icActivityUnitRelationService.insertBatch(unitRelationList); + + //保存活动与服务关系 + icActivityServiceRelationService.deleteByActivity(activity.getId()); + AtomicInteger j = new AtomicInteger(NumConstant.ONE); + List serviceRelationList = rePublishFormDTO.getServiceMatterList().stream().map(service -> { + IcActivityServiceRelationEntity relation = new IcActivityServiceRelationEntity(); + relation.setCustomerId(activity.getCustomerId()); + relation.setAgencyId(activity.getAgencyId()); + relation.setPids(activity.getPids()); + relation.setActivityId(activity.getId()); + relation.setServiceMatter(service); + relation.setSort(j.getAndIncrement()); + return relation; + }).collect(Collectors.toList()); + icActivityServiceRelationService.insertBatch(serviceRelationList); } } @@ -1462,8 +1564,6 @@ public class WorkActServiceImpl implements WorkActService { logger.warn("根据agencyId查询组织信息失败,agencyId={}",formDTO.getSponsorId()); } entity.setActId(actInfoEntity.getId()); - entity.setUnitId(actInfoEntity.getUnitId()); - entity.setServiceMatter(actInfoEntity.getServiceMatter()); entity.setTitle(actInfoEntity.getTitle()); entity.setTarget(actInfoEntity.getTarget()); entity.setContent(getContent(formDTO.getActContent())); diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/LatestActInfoDao.xml b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/LatestActInfoDao.xml index 67f4cb64a7..1bcd53d153 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/LatestActInfoDao.xml +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/LatestActInfoDao.xml @@ -114,6 +114,9 @@ lai.SPONSOR_NAME AS sponsorName, lai.SPONSOR_CONTACTS AS sponsorContacts, lai.SPONSOR_TEL AS sponsorTel, + lai.SPONSOR_TYPE, + lai.SPONSOR_ID, + lai.PID, lai.ACT_TYPE, lai.UNIT_ID, lai.SERVICE_MATTER, From f4f9cdabbdd708e26b96dadb559f5c186a8e7d49 Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Tue, 22 Feb 2022 15:47:30 +0800 Subject: [PATCH 022/115] =?UTF-8?q?=E6=BC=8F=E6=8F=90=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../excel/CommunitySelfOrgImportExcel.java | 37 +++++++++++++++++ .../excel/PartyMemberImportExcel.java | 40 +++++++++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/CommunitySelfOrgImportExcel.java create mode 100644 epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/excel/PartyMemberImportExcel.java diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/CommunitySelfOrgImportExcel.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/CommunitySelfOrgImportExcel.java new file mode 100644 index 0000000000..4b37754e98 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/CommunitySelfOrgImportExcel.java @@ -0,0 +1,37 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * 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. + *

+ * 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. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.excel; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import lombok.Data; + +/** + * 社会自组织导入错误数据存放文件 + * @author sun + */ +@Data +public class CommunitySelfOrgImportExcel { + + @Excel(name = "组织名称", width = 40) + private String agencyName; + @Excel(name = "社会组织名称", width = 40) + private String societyName; + @Excel(name = "错误信息", width = 50) + private String errorInfo; + +} \ No newline at end of file diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/excel/PartyMemberImportExcel.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/excel/PartyMemberImportExcel.java new file mode 100644 index 0000000000..40bd4946ec --- /dev/null +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/excel/PartyMemberImportExcel.java @@ -0,0 +1,40 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * 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. + *

+ * 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. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.modules.partymember.excel; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import lombok.Data; + +/** + * 党员风采导入错误数据存放文件 + * @author sun + */ +@Data +public class PartyMemberImportExcel { + + @Excel(name = "所属网格", width = 30) + private String gridName; + @Excel(name = "党员姓名", width = 20) + private String name; + @Excel(name = "主要事迹", width = 30) + private String mainDeed; + @Excel(name = "所属分类", width = 30) + private String categoryName; + @Excel(name = "错误信息", width = 40) + private String errorInfo; +} \ No newline at end of file From ac62f9811808e03fd7715e61b6c342601e8f1fbd Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Tue, 22 Feb 2022 16:25:01 +0800 Subject: [PATCH 023/115] =?UTF-8?q?=E8=81=94=E5=BB=BA=E6=B4=BB=E5=8A=A8?= =?UTF-8?q?=E5=85=B3=E8=81=94=E5=A4=9A=E4=B8=AA=E5=8D=95=E4=BD=8D=E5=92=8C?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E4=BA=8B=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/epmet/dto/IcPartyActivityDTO.java | 1 - 1 file changed, 1 deletion(-) diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcPartyActivityDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcPartyActivityDTO.java index 07ec52a21f..bcb04fb6ef 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcPartyActivityDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcPartyActivityDTO.java @@ -56,7 +56,6 @@ public class IcPartyActivityDTO implements Serializable { * 组织ID */ @JsonIgnore - @NotEmpty(message = "组织ID不能为空",groups = AddGroup.class) private String agencyId; /** From bac2851b48ded7ad4c16884b0b014eaee7f7323d Mon Sep 17 00:00:00 2001 From: jianjun Date: Tue, 22 Feb 2022 16:37:02 +0800 Subject: [PATCH 024/115] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E7=BB=93=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/result/ImportTaskCommonResultDTO.java | 35 +++++++++++++++++-- .../service/impl/ImportTaskServiceImpl.java | 14 ++++++-- 2 files changed, 43 insertions(+), 6 deletions(-) diff --git a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/result/ImportTaskCommonResultDTO.java b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/result/ImportTaskCommonResultDTO.java index 9fd7c0760c..9812f1abbc 100644 --- a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/result/ImportTaskCommonResultDTO.java +++ b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/result/ImportTaskCommonResultDTO.java @@ -1,14 +1,43 @@ package com.epmet.dto.result; -import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import java.io.Serializable; +import java.util.Date; + @Data -@AllArgsConstructor @NoArgsConstructor -public class ImportTaskCommonResultDTO { +public class ImportTaskCommonResultDTO implements Serializable { + public ImportTaskCommonResultDTO(String taskId) { + this.taskId = taskId; + } private String taskId; + /** + * 原始文件名 + */ + private String originFileName; + + /** + * 业务类型。resi:居民;楼栋:building;房屋:house。依次补充 + */ + private String bizType; + + /** + * 处理状态。processing:处理中;finished:完成;导入失败:finished_fail + */ + private String processStatus; + + /** + * 开始导入的时间 + */ + private Date startTime; + + /** + * 失败文件地址 + */ + private String resultDescFile; + } diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java index 7d6cb24573..d88bb945b6 100644 --- a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java +++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java @@ -5,6 +5,7 @@ import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.security.user.LoginUserUtil; import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.constants.ImportTaskConstants; import com.epmet.dao.ImportTaskDao; import com.epmet.dto.form.ImportTaskCommonFormDTO; @@ -16,7 +17,9 @@ import com.github.pagehelper.PageHelper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.Date; +import java.util.List; /** * @@ -93,10 +96,15 @@ public class ImportTaskServiceImpl implements ImportTaskService { public PageData page(ImportTaskCommonFormDTO param) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(ImportTaskEntity::getOperatorId,param.getOperatorId()); - Page page = PageHelper.startPage(param.getPageNo(), param.getPageSize(), param.isPage()).doSelectPage(() -> { + Page page = PageHelper.startPage(param.getPageNo(), param.getPageSize(), param.isPage()).doSelectPage(() -> { importRecordDao.selectList(queryWrapper); }); - PageData result = new PageData<>(page.getResult(),page.getTotal()); - return result; + List list = new ArrayList<>(); + page.getResult().forEach(item->{ + ImportTaskCommonResultDTO record = ConvertUtils.sourceToTarget(item, ImportTaskCommonResultDTO.class); + record.setTaskId(item.getId()); + list.add(record); + }); + return new PageData<>(list,page.getTotal()); } } From 135ace7c369dfc66f33ec42ac227ac76ee4c974d Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Tue, 22 Feb 2022 16:37:24 +0800 Subject: [PATCH 025/115] =?UTF-8?q?=E8=81=94=E5=BB=BA=E6=B4=BB=E5=8A=A8?= =?UTF-8?q?=E5=85=B3=E8=81=94=E5=A4=9A=E4=B8=AA=E5=8D=95=E4=BD=8D=E5=92=8C?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E4=BA=8B=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/IcPartyActivityDao.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcPartyActivityDao.xml b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcPartyActivityDao.xml index fb7912f42d..429461fbfb 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcPartyActivityDao.xml +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcPartyActivityDao.xml @@ -36,7 +36,7 @@ INNER JOIN ic_activity_service_relation c ON a.ID = c.ACTIVITY_ID WHERE a.DEL_FLAG = '0' AND (a.AGENCY_ID = #{agencyId} OR a.PIDS LIKE concat( '%', #{agencyId}, '%' )) - + AND c.SERVICE_MATTER = #{serviceMatter} @@ -71,7 +71,7 @@ WHERE DEL_FLAG = '0' AND AGENCY_ID = #{agencyId} - + AND UNIT_ID = #{unitId} GROUP BY @@ -86,7 +86,7 @@ WHERE DEL_FLAG = '0' AND AGENCY_ID = #{agencyId} - + AND SERVICE_MATTER = #{serviceMatter} GROUP BY @@ -95,7 +95,7 @@ WHERE a.DEL_FLAG = '0' AND a.AGENCY_ID = #{agencyId} - + AND TITLE LIKE concat('%', #{title}, '%') AND ACTIVITY_TIME BETWEEN #{startTime} AND #{endTime} @@ -127,7 +127,7 @@ WHERE DEL_FLAG = '0' AND (AGENCY_ID = #{agencyId} OR PIDS LIKE concat( '%', #{agencyId}, '%' )) - + AND UNIT_ID = #{unitId} GROUP BY @@ -142,7 +142,7 @@ WHERE DEL_FLAG = '0' AND (AGENCY_ID = #{agencyId} OR PIDS LIKE concat( '%', #{agencyId}, '%' )) - + AND SERVICE_MATTER = #{serviceMatter} GROUP BY From 562c6badb212cdc376b8d7d3bbda4fe1c1d2e75a Mon Sep 17 00:00:00 2001 From: jianjun Date: Tue, 22 Feb 2022 17:00:05 +0800 Subject: [PATCH 026/115] =?UTF-8?q?=E6=8C=89=E7=85=A7=E5=BC=80=E5=A7=8B?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/service/impl/ImportTaskServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java index d88bb945b6..f5b0e9eb14 100644 --- a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java +++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java @@ -95,7 +95,8 @@ public class ImportTaskServiceImpl implements ImportTaskService { @Override public PageData page(ImportTaskCommonFormDTO param) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(ImportTaskEntity::getOperatorId,param.getOperatorId()); + queryWrapper.eq(ImportTaskEntity::getOperatorId,param.getOperatorId()) + .orderByDesc(ImportTaskEntity::getStartTime); Page page = PageHelper.startPage(param.getPageNo(), param.getPageSize(), param.isPage()).doSelectPage(() -> { importRecordDao.selectList(queryWrapper); }); From 4d3827e0b4f82d9eef318eb08eb5dc82aacf2d4d Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Tue, 22 Feb 2022 17:06:01 +0800 Subject: [PATCH 027/115] =?UTF-8?q?=E8=81=94=E5=BB=BA=E6=B4=BB=E5=8A=A8?= =?UTF-8?q?=E5=85=B3=E8=81=94=E5=A4=9A=E4=B8=AA=E5=8D=95=E4=BD=8D=E5=92=8C?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E4=BA=8B=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../work/LatestDraftActInfoResultDTO.java | 3 ++- .../IcActivityServiceRelationService.java | 12 +++++++++++- .../service/IcActivityUnitRelationService.java | 12 +++++++++++- .../LatestActServiceRelationService.java | 12 +++++++++++- .../service/LatestActUnitRelationService.java | 12 +++++++++++- .../IcActivityServiceRelationServiceImpl.java | 17 +++++++++++++++++ .../impl/IcActivityUnitRelationServiceImpl.java | 17 +++++++++++++++++ .../impl/IcPartyActivityServiceImpl.java | 2 ++ .../service/impl/LatestActInfoServiceImpl.java | 9 +++++++++ .../LatestActServiceRelationServiceImpl.java | 17 +++++++++++++++++ .../impl/LatestActUnitRelationServiceImpl.java | 17 +++++++++++++++++ .../service/impl/WorkActDraftServiceImpl.java | 6 ++++-- 12 files changed, 129 insertions(+), 7 deletions(-) diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/LatestDraftActInfoResultDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/LatestDraftActInfoResultDTO.java index c4a250df92..70b4c5754f 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/LatestDraftActInfoResultDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/LatestDraftActInfoResultDTO.java @@ -176,7 +176,7 @@ public class LatestDraftActInfoResultDTO implements Serializable { * 联建单位 */ private String unitId; - + private List unitIdList; /** * 活动目标 */ @@ -186,4 +186,5 @@ public class LatestDraftActInfoResultDTO implements Serializable { * 服务事项 */ private String serviceMatter; + private List serviceMatterList; } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcActivityServiceRelationService.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcActivityServiceRelationService.java index b2cd111205..ae402d24a0 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcActivityServiceRelationService.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcActivityServiceRelationService.java @@ -23,7 +23,7 @@ public interface IcActivityServiceRelationService extends BaseService getServiceList(String activityId); /** - * 删除活动所属服务事项 + * 物理删除活动所属服务事项 * * @Param activityId * @Return @@ -31,4 +31,14 @@ public interface IcActivityServiceRelationService extends BaseService getUnitList(String activityId); /** - * 删除活动所属单位 + * 物理删除删除活动所属单位 * * @Param activityId * @Return @@ -31,4 +31,14 @@ public interface IcActivityUnitRelationService extends BaseService getServiceMatterList(String actId); /** - * 删除活动所属服务事项 + * 物理删除活动所属服务事项 * * @Param actId * @Return @@ -31,4 +31,14 @@ public interface LatestActServiceRelationService extends BaseService getUnitList(String actId); /** - * 删除活动所属单位列表 + * 物理删除活动所属单位列表 * * @Param actId * @Return @@ -32,4 +32,14 @@ public interface LatestActUnitRelationService extends BaseService wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(IcActivityServiceRelationEntity::getActivityId, activityId); + baseDao.delete(wrapper); + } } \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcActivityUnitRelationServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcActivityUnitRelationServiceImpl.java index eca268f436..d7bedf1d0b 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcActivityUnitRelationServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcActivityUnitRelationServiceImpl.java @@ -57,4 +57,21 @@ public class IcActivityUnitRelationServiceImpl extends BaseServiceImpl wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(IcActivityUnitRelationEntity::getActivityId, activityId); + baseDao.delete(wrapper); + } } \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyActivityServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyActivityServiceImpl.java index d275504fb4..503466278a 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyActivityServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyActivityServiceImpl.java @@ -215,6 +215,8 @@ public class IcPartyActivityServiceImpl extends BaseServiceImpl page(Map params) { @@ -158,6 +165,8 @@ public class LatestActInfoServiceImpl extends BaseServiceImpl wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(LatestActServiceRelationEntity::getActId, actId); + baseDao.delete(wrapper); + } } \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/LatestActUnitRelationServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/LatestActUnitRelationServiceImpl.java index 0614854d87..ceaa0ff9a6 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/LatestActUnitRelationServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/LatestActUnitRelationServiceImpl.java @@ -58,4 +58,21 @@ public class LatestActUnitRelationServiceImpl extends BaseServiceImpl wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(LatestActUnitRelationEntity::getActId, actId); + baseDao.delete(wrapper); + } } \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkActDraftServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkActDraftServiceImpl.java index 4739cff8fe..1273ffa577 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkActDraftServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkActDraftServiceImpl.java @@ -94,6 +94,10 @@ public class WorkActDraftServiceImpl implements WorkActDraftService { if(null!=latestAct){ List actContentList=latestActContentService.selectActContentList(latestAct.getActDraftId()); latestAct.setActContent(actContentList); + List unitList = latestActUnitRelationService.getUnitList(latestAct.getActDraftId()); + latestAct.setUnitIdList(unitList); + List serviceList = latestActServiceRelationService.getServiceMatterList(latestAct.getActDraftId()); + latestAct.setServiceMatterList(serviceList); } return latestAct; }else{ @@ -332,9 +336,7 @@ public class WorkActDraftServiceImpl implements WorkActDraftService { latestActInfoDTO.setAuditSwitch(formDTO.getAuditSwitch()); latestActInfoDTO.setActType(formDTO.getActType()); - latestActInfoDTO.setUnitId(formDTO.getUnitId()); latestActInfoDTO.setTarget(formDTO.getTarget()); - latestActInfoDTO.setServiceMatter(formDTO.getServiceMatter()); return latestActInfoDTO; } From d59d188754dd3158245e15e5feda998b63eb7d3f Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Tue, 22 Feb 2022 17:56:50 +0800 Subject: [PATCH 028/115] =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9A=201.?= =?UTF-8?q?=E5=B1=85=E6=B0=91=E5=AF=BC=E5=85=A5-=E6=94=B9=E4=B8=BA?= =?UTF-8?q?=E5=BC=82=E6=AD=A5-=E5=BE=85=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/IcResiUserController.java | 104 ++++++++++++++---- .../service/IcResiUserImportService.java | 2 +- .../impl/IcResiUserImportServiceImpl.java | 14 +-- 3 files changed, 91 insertions(+), 29 deletions(-) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java index 3619bb6088..e149317c56 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java @@ -53,7 +53,6 @@ import com.epmet.dto.form.*; import com.epmet.dto.result.*; import com.epmet.enums.IcResiUserTableEnum; import com.epmet.excel.support.ExportResiUserItemDTO; -import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.feign.EpmetMessageOpenFeignClient; import com.epmet.feign.OperCustomizeOpenFeignClient; import com.epmet.feign.OssFeignClient; @@ -65,6 +64,7 @@ import org.apache.commons.io.FileUtils; import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.tomcat.util.http.MimeHeaders; import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpHeaders; @@ -72,17 +72,21 @@ import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.support.StandardMultipartHttpServletRequest; +import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; +import java.lang.reflect.Field; import java.net.URLEncoder; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.*; +import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; @@ -429,30 +433,95 @@ public class IcResiUserController implements ResultDataResolver { */ @NoRepeatSubmit @PostMapping("importExcel") - public void importExcelByEasyExcel(@RequestHeader("customerId") String customerId,@RequestPart("file") MultipartFile file, HttpServletResponse response) { + public Result importExcelByEasyExcel(@RequestHeader("customerId") String customerId,@RequestPart("file") MultipartFile file, HttpServletRequest multipartRequest, HttpServletResponse response) { if (file.isEmpty()) { throw new RenException("请上传文件"); } + String originalFilename = file.getOriginalFilename(); // 校验文件类型 - String extension = FilenameUtils.getExtension(file.getOriginalFilename()); + String extension = FilenameUtils.getExtension(originalFilename); if (!"xls".equals(extension) && !"xlsx".equals(extension)) { throw new RenException("文件类型不匹配"); } String operatorId = loginUserUtil.getLoginUserId(); - String importTaskId; - // 记录导入任务 - importTaskId = icResiUserImportService.createImportTaskRecord(operatorId, ImportTaskConstants.BIZ_TYPE_RESI); + String importTaskId = icResiUserImportService.createImportTaskRecord(operatorId, ImportTaskConstants.BIZ_TYPE_RESI, originalFilename);; - // 转储文件到临时目录 && 执行异步导入 - submitResiImportTask(customerId, operatorId, importTaskId, extension, file, response); -// ServletRequestAttributes sra = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); -// CompletableFuture.runAsync(() -> { -// RequestContextHolder.setRequestAttributes(sra, true); -// submitResiImportTask(customerId, operatorId, importTaskId, extension, file, response); -// }); + // 缓存上传的文件 + Path importTempFileSavePath; + try { + String fileName = UUID.randomUUID().toString().concat(".").concat(extension); + importTempFileSavePath = IC_RESI_UPLOAD_DIR.resolve(fileName); + IOUtils.copy(file.getInputStream(), new FileOutputStream(importTempFileSavePath.toString())); + } catch (Exception e) { + log.error("【上传居民信息】保存上传的文件失败:{}", ExceptionUtils.getErrorStackTrace(e)); + throw new RenException("上传失败"); + } + + final Path importTempFileSavePathFinal = importTempFileSavePath; + + HttpServletRequest request = ((StandardMultipartHttpServletRequest)multipartRequest).getRequest(); + + HashMap headers = getHeadersFromRequest(request); + + // 异步执行导入 + CompletableFuture.runAsync(() -> { + try { + // 睡眠2秒钟,等待主线程先结束,主线程会清空request对象的headers,等他执行了清空之后,我们这边再手动setHeader进去 + Thread.sleep(1000l); + } catch (InterruptedException e) { + e.printStackTrace(); + } + setHeaders2Request(request, headers); + submitResiImportTask(customerId, operatorId, importTaskId, importTempFileSavePathFinal, response); + }); + + return new Result(); + } + + private HashMap getHeadersFromRequest(HttpServletRequest request) { + HashMap headers = new HashMap<>(); + Enumeration headerNames = request.getHeaderNames(); + if (headerNames != null) { + while (headerNames.hasMoreElements()) { + String name = headerNames.nextElement(); + Enumeration values = request.getHeaders(name); + while (values.hasMoreElements()) { + String value = values.nextElement(); + headers.put(name, value); + } + } + } + return headers; + } + + private void setHeaders2Request(HttpServletRequest request, HashMap headers) { + for (Map.Entry kv : headers.entrySet()) { + setParam2Header(request, kv.getKey(), kv.getValue()); + } + } + + private void setParam2Header(HttpServletRequest requestFacade, String key, String value){ + Class requestFacadeClass = requestFacade.getClass(); + try { + Field requestField = requestFacadeClass.getDeclaredField("request"); + requestField.setAccessible(true); + Object requestObject = requestField.get(requestFacade); + + Field coyoteRequestField = requestObject.getClass().getDeclaredField("coyoteRequest"); + coyoteRequestField.setAccessible(true); + Object coyoteRequestObject = coyoteRequestField.get(requestObject); + + Field headers = coyoteRequestObject.getClass().getDeclaredField("headers"); + headers.setAccessible(true); + MimeHeaders o2 = (MimeHeaders)headers.get(coyoteRequestObject); + o2.addValue(key).setString(value); + } catch (Exception e) { + e.printStackTrace(); + log.error("为子线程设置请求头出错"); + } } /** @@ -460,18 +529,11 @@ public class IcResiUserController implements ResultDataResolver { * @param customerId * @param operatorId * @param importTaskId - * @param extension - * @param file * @param response */ - private void submitResiImportTask(String customerId, String operatorId, String importTaskId, String extension, MultipartFile file, HttpServletResponse response) { + private void submitResiImportTask(String customerId, String operatorId, String importTaskId, Path importTempFileSavePath, HttpServletResponse response) { - Path importTempFileSavePath = null; try { - String fileName = UUID.randomUUID().toString().concat(".").concat(extension); - importTempFileSavePath = IC_RESI_UPLOAD_DIR.resolve(fileName); - IOUtils.copy(file.getInputStream(), new FileOutputStream(importTempFileSavePath.toString())); - List formItemList = icResiUserService.listFormItems(customerId,IcFormCodeEnum.RESI_BASE_INFO.getCode()); icResiUserImportService.importIcResiInfoFromExcel(importTaskId, formItemList, importTempFileSavePath.toString(), response, IC_RESI_UPLOAD_DIR); } catch (Throwable e) { diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserImportService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserImportService.java index 18618dc128..7358dcd961 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserImportService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserImportService.java @@ -21,7 +21,7 @@ public interface IcResiUserImportService { * @param bizType * @return */ - String createImportTaskRecord(String operatorId, String bizType); + String createImportTaskRecord(String operatorId, String bizType, String originFileName); /** * 完成导入任务 diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java index 0e734b75dd..3cbfc6215c 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java @@ -1805,17 +1805,17 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res * @param bizType * @return */ - public String createImportTaskRecord(String operatorId, String bizType) { + public String createImportTaskRecord(String operatorId, String bizType, String originFilename) { ImportTaskCommonFormDTO importTaskForm = new ImportTaskCommonFormDTO(); importTaskForm.setOperatorId(operatorId); importTaskForm.setBizType(bizType); - ImportTaskCommonResultDTO resultDTO = getResultDataOrThrowsException(commonServiceOpenFeignClient.createImportTask(importTaskForm), - ServiceConstant.EPMET_COMMON_SERVICE, - EpmetErrorCode.SERVER_ERROR.getCode(), - "【居民信息导入】创建导入任务记录失败", - "【居民信息导入】创建导入任务记录失败"); + importTaskForm.setOriginFileName(originFilename); + Result result = commonServiceOpenFeignClient.createImportTask(importTaskForm); + if (result != null && !result.success()) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), result.getMsg(), result.getMsg()); + } - return resultDTO.getTaskId(); + return result.getData().getTaskId(); } /** From 22623aa25c1d40c5f61c3cd7625bf956949f0878 Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Wed, 23 Feb 2022 09:29:08 +0800 Subject: [PATCH 029/115] =?UTF-8?q?=E8=81=94=E5=BB=BA=E6=B4=BB=E5=8A=A8?= =?UTF-8?q?=E5=85=B3=E8=81=94=E5=A4=9A=E4=B8=AA=E5=8D=95=E4=BD=8D=E5=92=8C?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E4=BA=8B=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/service/LatestActUnitRelationService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/LatestActUnitRelationService.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/LatestActUnitRelationService.java index 282bc9a78c..da31dc42ba 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/LatestActUnitRelationService.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/LatestActUnitRelationService.java @@ -40,6 +40,6 @@ public interface LatestActUnitRelationService extends BaseService Date: Wed, 23 Feb 2022 10:31:53 +0800 Subject: [PATCH 030/115] =?UTF-8?q?=E8=81=94=E5=BB=BA=E6=B4=BB=E5=8A=A8?= =?UTF-8?q?=E5=85=B3=E8=81=94=E5=A4=9A=E4=B8=AA=E5=8D=95=E4=BD=8D=E5=92=8C?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E4=BA=8B=E9=A1=B9sql=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../db/migration/V0.0.11__ic_party_change.sql | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 epmet-module/epmet-heart/epmet-heart-server/src/main/resources/db/migration/V0.0.11__ic_party_change.sql diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/db/migration/V0.0.11__ic_party_change.sql b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/db/migration/V0.0.11__ic_party_change.sql new file mode 100644 index 0000000000..ad3305d8f3 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/db/migration/V0.0.11__ic_party_change.sql @@ -0,0 +1,68 @@ +CREATE TABLE `ic_activity_service_relation` ( + `ID` varchar(64) NOT NULL COMMENT '主键', + `CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户id', + `AGENCY_ID` varchar(64) NOT NULL COMMENT '组织ID', + `PIDS` varchar(255) DEFAULT NULL COMMENT '组织的所有上级', + `ACTIVITY_ID` varchar(32) NOT NULL COMMENT '活动ID', + `ACT_ID` varchar(64) DEFAULT NULL COMMENT 'act_info表ID', + `SERVICE_MATTER` varchar(32) NOT NULL DEFAULT '1' COMMENT '服务事项', + `SORT` int(4) DEFAULT NULL COMMENT '排序', + `DEL_FLAG` varchar(1) NOT NULL DEFAULT '0' COMMENT '删除标识 0未删除、1已删除', + `REVISION` int(11) NOT NULL DEFAULT '0' COMMENT '乐观锁', + `CREATED_BY` varchar(32) NOT NULL COMMENT '创建人', + `CREATED_TIME` datetime NOT NULL COMMENT '创建时间', + `UPDATED_BY` varchar(32) NOT NULL COMMENT '更新人', + `UPDATED_TIME` datetime NOT NULL COMMENT '更新时间', + PRIMARY KEY (`ID`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='联建活动与服务事项关联表'; +CREATE TABLE `ic_activity_unit_relation` ( + `ID` varchar(64) NOT NULL COMMENT '主键', + `CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户id', + `AGENCY_ID` varchar(64) NOT NULL COMMENT '组织ID', + `PIDS` varchar(255) DEFAULT NULL COMMENT '组织的所有上级', + `ACTIVITY_ID` varchar(32) NOT NULL COMMENT '活动ID', + `ACT_ID` varchar(64) DEFAULT NULL COMMENT 'act_info表ID', + `UNIT_ID` varchar(32) NOT NULL COMMENT '单位ID', + `SORT` int(4) DEFAULT '1' COMMENT '排序', + `DEL_FLAG` varchar(1) NOT NULL DEFAULT '0' COMMENT '删除标识 0未删除、1已删除', + `REVISION` int(11) NOT NULL DEFAULT '0' COMMENT '乐观锁', + `CREATED_BY` varchar(32) NOT NULL COMMENT '创建人', + `CREATED_TIME` datetime NOT NULL COMMENT '创建时间', + `UPDATED_BY` varchar(32) NOT NULL COMMENT '更新人', + `UPDATED_TIME` datetime NOT NULL COMMENT '更新时间', + PRIMARY KEY (`ID`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='联建活动与单位关联表'; +CREATE TABLE `latest_act_service_relation` ( + `ID` varchar(64) NOT NULL COMMENT '主键', + `CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户id', + `ACT_ID` varchar(64) DEFAULT NULL COMMENT 'latest_act_info表ID', + `SERVICE_MATTER` varchar(32) NOT NULL COMMENT '服务事项', + `SORT` int(4) DEFAULT '1' COMMENT '排序', + `DEL_FLAG` varchar(1) NOT NULL DEFAULT '0' COMMENT '删除标识 0未删除、1已删除', + `REVISION` int(11) NOT NULL DEFAULT '0' COMMENT '乐观锁', + `CREATED_BY` varchar(32) NOT NULL COMMENT '创建人', + `CREATED_TIME` datetime NOT NULL COMMENT '创建时间', + `UPDATED_BY` varchar(32) NOT NULL COMMENT '更新人', + `UPDATED_TIME` datetime NOT NULL COMMENT '更新时间', + PRIMARY KEY (`ID`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='联建活动与服务事项关联表'; +CREATE TABLE `latest_act_unit_relation` ( + `ID` varchar(64) NOT NULL DEFAULT '1' COMMENT '主键', + `CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户id', + `ACT_ID` varchar(64) DEFAULT NULL COMMENT 'latest_act_info表ID', + `UNIT_ID` varchar(32) NOT NULL COMMENT '单位ID', + `SORT` int(4) DEFAULT NULL COMMENT '排序', + `DEL_FLAG` varchar(1) NOT NULL DEFAULT '0' COMMENT '删除标识 0未删除、1已删除', + `REVISION` int(11) NOT NULL DEFAULT '0' COMMENT '乐观锁', + `CREATED_BY` varchar(32) NOT NULL COMMENT '创建人', + `CREATED_TIME` datetime NOT NULL COMMENT '创建时间', + `UPDATED_BY` varchar(32) NOT NULL COMMENT '更新人', + `UPDATED_TIME` datetime NOT NULL COMMENT '更新时间', + PRIMARY KEY (`ID`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='联建活动与单位关联表'; + +ALTER TABLE `epmet_heart`.`ic_party_activity` + MODIFY COLUMN `UNIT_ID` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '单位ID' AFTER `ACT_ID`, + MODIFY COLUMN `SERVICE_MATTER` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '服务事项' AFTER `UNIT_ID`; + +UPDATE act_info SET ACT_TYPE = 'heart' WHERE ACT_TYPE IS NULL; \ No newline at end of file From e80c4e6733d52b284aad0c8f06ba02bd31b075fb Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Wed, 23 Feb 2022 14:50:39 +0800 Subject: [PATCH 031/115] =?UTF-8?q?=E8=81=94=E5=BB=BA=E6=B4=BB=E5=8A=A8?= =?UTF-8?q?=E5=85=B3=E8=81=94=E5=A4=9A=E4=B8=AA=E5=8D=95=E4=BD=8D=E5=92=8C?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E4=BA=8B=E9=A1=B9=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/service/impl/WorkActServiceImpl.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkActServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkActServiceImpl.java index 31e38f1b01..7ab8dc2e52 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkActServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkActServiceImpl.java @@ -1516,10 +1516,10 @@ public class WorkActServiceImpl implements WorkActService { AtomicInteger i = new AtomicInteger(NumConstant.ONE); List unitRelationList = rePublishFormDTO.getUnitIdList().stream().map(unitId -> { IcActivityUnitRelationEntity relation = new IcActivityUnitRelationEntity(); - relation.setCustomerId(activity.getCustomerId()); - relation.setAgencyId(activity.getAgencyId()); - relation.setPids(activity.getPids()); - relation.setActivityId(activity.getId()); + relation.setCustomerId(activityDTO.getCustomerId()); + relation.setAgencyId(activityDTO.getAgencyId()); + relation.setPids(activityDTO.getPids()); + relation.setActivityId(activityDTO.getId()); relation.setUnitId(unitId); relation.setSort(i.getAndIncrement()); return relation; @@ -1531,10 +1531,10 @@ public class WorkActServiceImpl implements WorkActService { AtomicInteger j = new AtomicInteger(NumConstant.ONE); List serviceRelationList = rePublishFormDTO.getServiceMatterList().stream().map(service -> { IcActivityServiceRelationEntity relation = new IcActivityServiceRelationEntity(); - relation.setCustomerId(activity.getCustomerId()); - relation.setAgencyId(activity.getAgencyId()); - relation.setPids(activity.getPids()); - relation.setActivityId(activity.getId()); + relation.setCustomerId(activityDTO.getCustomerId()); + relation.setAgencyId(activityDTO.getAgencyId()); + relation.setPids(activityDTO.getPids()); + relation.setActivityId(activityDTO.getId()); relation.setServiceMatter(service); relation.setSort(j.getAndIncrement()); return relation; From d4258aa9b56689b154fc84cb67e15b61be138f94 Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Fri, 25 Feb 2022 13:54:30 +0800 Subject: [PATCH 032/115] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20common-service=20i?= =?UTF-8?q?mportTask=E7=9A=84flyway=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../db/migration/V0.0.12_createImportTask.sql | 19 ++++++++ .../com/epmet/entity/ImportTaskEntity.java | 48 ------------------- 2 files changed, 19 insertions(+), 48 deletions(-) create mode 100644 epmet-module/epmet-common-service/common-service-server/src/main/resources/db/migration/V0.0.12_createImportTask.sql delete mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/entity/ImportTaskEntity.java diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/resources/db/migration/V0.0.12_createImportTask.sql b/epmet-module/epmet-common-service/common-service-server/src/main/resources/db/migration/V0.0.12_createImportTask.sql new file mode 100644 index 0000000000..437af39520 --- /dev/null +++ b/epmet-module/epmet-common-service/common-service-server/src/main/resources/db/migration/V0.0.12_createImportTask.sql @@ -0,0 +1,19 @@ +CREATE TABLE `import_task` ( + `ID` varchar(64) NOT NULL COMMENT 'ID', + `CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户ID', + `ORIGIN_FILE_NAME` varchar(128) NOT NULL COMMENT '原始文件名', + `BIZ_TYPE` varchar(32) NOT NULL COMMENT '业务类型。【resi:居民;neighborHood:小区;building:楼栋;house:房屋;party_member:党员;society_org:社会组织;community_self_org:社区自组织】依次补充', + `PROCESS_STATUS` varchar(32) NOT NULL COMMENT '处理状态。processing:处理中;finished_success:成功;finished_unsuccess:未完全成功', + `OPERATOR_ID` varchar(64) NOT NULL COMMENT '谁导入的', + `START_TIME` datetime NOT NULL COMMENT '开始导入的时间', + `RESULT_DESC_FILE` varchar(255) DEFAULT NULL COMMENT '导入失败结果描述文件', + `RESULT_DESC` varchar(255) DEFAULT NULL COMMENT '导入结果描述,可以输入任何描述信息', + `DEL_FLAG` tinyint(1) NOT NULL COMMENT '删除标识:0.未删除 1.已删除', + `REVISION` int(11) NOT NULL COMMENT '乐观锁', + `CREATED_BY` varchar(64) NOT NULL COMMENT '创建人', + `CREATED_TIME` datetime NOT NULL COMMENT '创建时间', + `UPDATED_BY` varchar(64) NOT NULL COMMENT '更新人', + `UPDATED_TIME` datetime NOT NULL COMMENT '更新时间', + PRIMARY KEY (`ID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 + diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/ImportTaskEntity.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/ImportTaskEntity.java deleted file mode 100644 index 742c6cc93e..0000000000 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/ImportTaskEntity.java +++ /dev/null @@ -1,48 +0,0 @@ -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 2022-02-15 - */ -@Data -@EqualsAndHashCode(callSuper=false) -@TableName("import_task") -public class ImportTaskEntity extends BaseEpmetEntity { - - private static final long serialVersionUID = 1L; - - /** - * 业务类型。resi:居民;楼栋:building;房屋:house。依次补充 - */ - private String bizType; - - /** - * 处理状态。processing:处理中;finished:完成; - */ - private String processStatus; - - /** - * 谁导入的 - */ - private String operatorId; - - /** - * 开始导入的时间 - */ - private Date startTime; - - private String resultDescFile; - - private String resultDesc; - -} From 60a7b0d08e126d47317530a87f2a8c3d586566ef Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Fri, 25 Feb 2022 14:20:04 +0800 Subject: [PATCH 033/115] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20common-service=20i?= =?UTF-8?q?mportTask=E7=9A=84flyway=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...V0.0.12_createImportTask.sql => V0.0.12__createImportTask.sql} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename epmet-module/epmet-common-service/common-service-server/src/main/resources/db/migration/{V0.0.12_createImportTask.sql => V0.0.12__createImportTask.sql} (100%) diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/resources/db/migration/V0.0.12_createImportTask.sql b/epmet-module/epmet-common-service/common-service-server/src/main/resources/db/migration/V0.0.12__createImportTask.sql similarity index 100% rename from epmet-module/epmet-common-service/common-service-server/src/main/resources/db/migration/V0.0.12_createImportTask.sql rename to epmet-module/epmet-common-service/common-service-server/src/main/resources/db/migration/V0.0.12__createImportTask.sql From 57a269bf445315cb5228a5d58602208231f68ec9 Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Fri, 25 Feb 2022 15:24:32 +0800 Subject: [PATCH 034/115] =?UTF-8?q?=E5=85=9A=E5=91=98=E9=A3=8E=E9=87=87?= =?UTF-8?q?=E5=92=8C=E7=A4=BE=E4=BC=9A=E8=87=AA=E7=BB=84=E7=BB=87=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0=E6=94=B9=E4=B8=BA=E5=BC=82=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/IcCommunitySelfOrganizationController.java | 8 +++----- .../impl/IcCommunitySelfOrganizationServiceImpl.java | 4 ++++ .../controller/IcPartymemberStyleController.java | 5 ++++- .../service/impl/IcPartymemberStyleServiceImpl.java | 4 ++++ 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcCommunitySelfOrganizationController.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcCommunitySelfOrganizationController.java index 94fd66386b..022e6d834b 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcCommunitySelfOrganizationController.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcCommunitySelfOrganizationController.java @@ -17,10 +17,6 @@ package com.epmet.controller; -import cn.afterturn.easypoi.excel.ExcelExportUtil; -import cn.afterturn.easypoi.excel.entity.ExportParams; -import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; -import cn.hutool.poi.excel.ExcelUtil; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.aop.NoRepeatSubmit; import com.epmet.commons.tools.exception.RenException; @@ -143,7 +139,7 @@ public class IcCommunitySelfOrganizationController { * @date 2021/11/25 9:03 上午 */ @PostMapping("importcommunityselforganization") - public void importCommunitySelfOrganization(@LoginUser TokenDto tokenDto, HttpServletResponse response, @RequestPart("file") MultipartFile file) throws Exception { + public Result importCommunitySelfOrganization(@LoginUser TokenDto tokenDto, HttpServletResponse response, @RequestPart("file") MultipartFile file) throws Exception { if (file.isEmpty()) { throw new RenException("请上传文件"); } @@ -164,6 +160,8 @@ public class IcCommunitySelfOrganizationController { } //2.执行导入程序 icCommunitySelfOrganizationService.importCommunitySelfOrganization(tokenDto, response, file, result.getData().getTaskId()); + + return new Result(); } /** diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcCommunitySelfOrganizationServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcCommunitySelfOrganizationServiceImpl.java index 663461c62c..ca222a906c 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcCommunitySelfOrganizationServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcCommunitySelfOrganizationServiceImpl.java @@ -57,6 +57,8 @@ import org.apache.commons.lang3.StringUtils; import org.apache.http.entity.ContentType; import org.apache.poi.ss.usermodel.Workbook; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; +import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; @@ -80,6 +82,7 @@ import static com.epmet.commons.tools.utils.DateUtils.DATE_PATTERN; */ @Service @Slf4j +@EnableAsync public class IcCommunitySelfOrganizationServiceImpl extends BaseServiceImpl implements IcCommunitySelfOrganizationService { @Autowired @@ -472,6 +475,7 @@ public class IcCommunitySelfOrganizationServiceImpl extends BaseServiceImpl fileList = new ArrayList<>(); CommunitySelfOrgImportExcel excel = null; diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartymemberStyleController.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartymemberStyleController.java index 4f41645000..b29fd3f54a 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartymemberStyleController.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartymemberStyleController.java @@ -17,6 +17,7 @@ package com.epmet.modules.partymember.controller; +import com.baomidou.mybatisplus.extension.api.R; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.aop.NoRepeatSubmit; import com.epmet.commons.tools.constant.NumConstant; @@ -124,7 +125,7 @@ public class IcPartymemberStyleController { } @PostMapping("import") - public void importData(@LoginUser TokenDto tokenDto, HttpServletResponse response, @RequestPart("file") MultipartFile file) throws IOException { + public Result importData(@LoginUser TokenDto tokenDto, HttpServletResponse response, @RequestPart("file") MultipartFile file) throws IOException { // 校验文件类型 String extension = FilenameUtils.getExtension(file.getOriginalFilename()); if (!"xls".equals(extension) && !"xlsx".equals(extension)) { @@ -141,6 +142,8 @@ public class IcPartymemberStyleController { } //2.执行导入程序 icPartymemberStyleService.importData(tokenDto, response, file, result.getData().getTaskId()); + + return new Result(); } /** diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleServiceImpl.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleServiceImpl.java index b17d3f3a4a..2d4533ff94 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleServiceImpl.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleServiceImpl.java @@ -71,6 +71,8 @@ import org.apache.commons.lang3.StringUtils; import org.apache.http.entity.ContentType; import org.apache.poi.ss.usermodel.Workbook; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; +import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; @@ -92,6 +94,7 @@ import java.util.stream.Collectors; */ @Slf4j @Service +@EnableAsync public class IcPartymemberStyleServiceImpl extends BaseServiceImpl implements IcPartymemberStyleService { @Resource @@ -255,6 +258,7 @@ public class IcPartymemberStyleServiceImpl extends BaseServiceImpl fileList = new ArrayList<>(); PartyMemberImportExcel excel = null; From c5334c1ab6b4cb49f42f5f76e7d1ad314adca99d Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Fri, 25 Feb 2022 15:52:11 +0800 Subject: [PATCH 035/115] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/IcCommunitySelfOrganizationController.java | 3 +++ .../service/impl/IcCommunitySelfOrganizationServiceImpl.java | 2 +- .../partymember/controller/IcPartymemberStyleController.java | 3 +++ .../service/impl/IcPartymemberStyleServiceImpl.java | 2 +- 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcCommunitySelfOrganizationController.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcCommunitySelfOrganizationController.java index 022e6d834b..bbea13e834 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcCommunitySelfOrganizationController.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcCommunitySelfOrganizationController.java @@ -45,6 +45,7 @@ import com.epmet.service.IcCommunitySelfOrganizationService; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.io.FilenameUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -139,6 +140,8 @@ public class IcCommunitySelfOrganizationController { * @date 2021/11/25 9:03 上午 */ @PostMapping("importcommunityselforganization") + //service方法是异步的,需要事务注解加在被调用方 否则事务不起作用 + @Transactional(rollbackFor = Exception.class) public Result importCommunitySelfOrganization(@LoginUser TokenDto tokenDto, HttpServletResponse response, @RequestPart("file") MultipartFile file) throws Exception { if (file.isEmpty()) { throw new RenException("请上传文件"); diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcCommunitySelfOrganizationServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcCommunitySelfOrganizationServiceImpl.java index ca222a906c..8572ededf5 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcCommunitySelfOrganizationServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcCommunitySelfOrganizationServiceImpl.java @@ -474,7 +474,7 @@ public class IcCommunitySelfOrganizationServiceImpl extends BaseServiceImpl fileList = new ArrayList<>(); diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartymemberStyleController.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartymemberStyleController.java index b29fd3f54a..b99c297700 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartymemberStyleController.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartymemberStyleController.java @@ -42,6 +42,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.io.FilenameUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -125,6 +126,8 @@ public class IcPartymemberStyleController { } @PostMapping("import") + //service方法是异步的,需要事务注解加在被调用方 否则事务不起作用 + @Transactional(rollbackFor = Exception.class) public Result importData(@LoginUser TokenDto tokenDto, HttpServletResponse response, @RequestPart("file") MultipartFile file) throws IOException { // 校验文件类型 String extension = FilenameUtils.getExtension(file.getOriginalFilename()); diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleServiceImpl.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleServiceImpl.java index 2d4533ff94..de24a39521 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleServiceImpl.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleServiceImpl.java @@ -257,7 +257,7 @@ public class IcPartymemberStyleServiceImpl extends BaseServiceImpl fileList = new ArrayList<>(); From b81267ad11de9b49a2ad12b20b6456369b0a6588 Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Fri, 25 Feb 2022 16:22:07 +0800 Subject: [PATCH 036/115] Async --- .../epmet/controller/BuildingController.java | 30 ++++++---- .../com/epmet/controller/HouseController.java | 59 ++++++------------- .../controller/IcNeighborHoodController.java | 19 +++++- .../com/epmet/service/BuildingService.java | 3 +- .../java/com/epmet/service/HouseService.java | 6 ++ .../epmet/service/IcNeighborHoodService.java | 3 +- .../service/impl/BuildingServiceImpl.java | 14 ++--- .../epmet/service/impl/HouseServiceImpl.java | 45 ++++++++++++++ .../impl/IcNeighborHoodServiceImpl.java | 47 ++++----------- 9 files changed, 123 insertions(+), 103 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/BuildingController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/BuildingController.java index 2ac1605193..83165b6c4f 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/BuildingController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/BuildingController.java @@ -25,20 +25,22 @@ 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.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.constant.ImportErrorMsgConstants; +import com.epmet.constants.ImportTaskConstants; import com.epmet.dao.IcBuildingUnitDao; import com.epmet.dto.BuildingTreeLevelDTO; -import com.epmet.dto.form.IcBulidingFormDTO; -import com.epmet.dto.form.IcBulidingUnitFormDTO; -import com.epmet.dto.form.ImportInfoFormDTO; -import com.epmet.dto.form.ListIcNeighborHoodFormDTO; +import com.epmet.dto.form.*; import com.epmet.dto.result.BuildingResultDTO; import com.epmet.dto.result.BuildingResultPagedDTO; import com.epmet.dto.result.IcNeighborHoodResultDTO; +import com.epmet.dto.result.ImportTaskCommonResultDTO; import com.epmet.entity.IcBuildingUnitEntity; import com.epmet.excel.IcBuildingExcel; +import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.service.BuildingService; import com.epmet.service.IcBuildingService; import com.epmet.service.NeighborHoodService; @@ -66,17 +68,12 @@ import java.util.stream.Collectors; @RequestMapping("building") public class BuildingController { - - @Autowired - private NeighborHoodService neighborHoodService; - - @Autowired - private IcBuildingService icBuildingService; @Autowired private BuildingService buildingService; @Autowired private IcBuildingUnitDao icBuildingUnitDao; - + @Autowired + private EpmetCommonServiceOpenFeignClient epmetCommonServiceOpenFeignClient; @PostMapping("buildinglist") @@ -219,7 +216,16 @@ public class BuildingController { formDTO.setOrgType(orgType); formDTO.setOrgId(orgId); formDTO.setUserId(tokenDTO.getUserId()); - return buildingService.buildingImportExcel(formDTO,file); + ImportTaskCommonFormDTO importFormDTO = new ImportTaskCommonFormDTO(); + importFormDTO.setBizType(ImportTaskConstants.BIZ_TYPE_BUILDING); + importFormDTO.setOperatorId(formDTO.getUserId()); + importFormDTO.setOriginFileName(ImportErrorMsgConstants.BUILDING_ERROR_NAME); + Result importTask = epmetCommonServiceOpenFeignClient.createImportTask(importFormDTO); + if (!importTask.success()){ + throw new EpmetException("当前存在上传任务"); + } + buildingService.buildingImportExcel(formDTO,file,importTask); + return new Result(); } /** diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java index 7bb02aac72..976032bd01 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java @@ -50,15 +50,22 @@ import com.epmet.service.IcNeighborHoodService; import com.epmet.util.ExcelPoiUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.apache.tomcat.util.http.MimeHeaders; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.support.StandardMultipartHttpServletRequest; +import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.lang.reflect.Field; import java.util.*; +import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; @@ -83,8 +90,6 @@ public class HouseController implements ResultDataResolver { @Autowired private IcHouseRedis icHouseRedis; @Autowired - private IcNeighborHoodService neighborHoodService; - @Autowired private IcHouseService icHouseService; @Autowired private EpmetCommonServiceOpenFeignClient epmetCommonServiceOpenFeignClient; @@ -255,52 +260,22 @@ public class HouseController implements ResultDataResolver { @PostMapping("houseimport") public Result houseImport(@LoginUser TokenDto tokenDTO, @RequestParam("file") MultipartFile file, @RequestParam("orgId")String orgId, - @RequestParam("orgType")String orgType){ + @RequestParam("orgType")String orgType,HttpServletRequest multipartRequest){ ImportInfoFormDTO formDTO = new ImportInfoFormDTO(); formDTO.setCustomerId(tokenDTO.getCustomerId()); formDTO.setOrgType(orgType); formDTO.setOrgId(orgId); formDTO.setUserId(tokenDTO.getUserId()); - ExcelReader excelReader = null; - try { - InputStream inputStream = null; - try { - inputStream = file.getInputStream(); - } catch (IOException e) { - return new Result().error("读取文件失败"); - } - ImportTaskCommonFormDTO importFormDTO = new ImportTaskCommonFormDTO(); - importFormDTO.setBizType(ImportTaskConstants.BIZ_TYPE_HOUSE); - importFormDTO.setOperatorId(formDTO.getUserId()); - importFormDTO.setOriginFileName(ImportErrorMsgConstants.HOUSE_ERROR_NAME); - Result importTask = epmetCommonServiceOpenFeignClient.createImportTask(importFormDTO); - if (!importTask.success()){ - throw new EpmetException("创建任务失败"); - } - excelReader = EasyExcel.read(inputStream).build(); - // 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener - ReadSheet readSheet = EasyExcel.readSheet(0).head(HouseInfoModel.class) - .registerReadListener(new ImportHouseInfoListener(formDTO,icBuildingDao,icHouseRedis,neighborHoodService,icHouseService,epmetCommonServiceOpenFeignClient,importTask.getData().getTaskId())) - .build(); - excelReader.read(readSheet); - } finally { - if (excelReader != null) { - excelReader.finish(); - } - } - ImportResultDTO dto = icHouseRedis.getImportResultDTO(formDTO.getCustomerId(), formDTO.getUserId()); - if (null == dto){ - return new Result<>(); - } - List nums = dto.getNums(); - Integer num = dto.getNum(); - String s = "共%s条数据,导入成功%s条。"; - if (nums.size() > NumConstant.ZERO){ - Collections.sort(nums); - s = s + "第"+nums.stream().map(String::valueOf).collect(Collectors.joining("、"))+"条导入失败"; - return new Result<>().error(9999,String.format(s,num,num - nums.size())); + ImportTaskCommonFormDTO importFormDTO = new ImportTaskCommonFormDTO(); + importFormDTO.setBizType(ImportTaskConstants.BIZ_TYPE_HOUSE); + importFormDTO.setOperatorId(formDTO.getUserId()); + importFormDTO.setOriginFileName(ImportErrorMsgConstants.HOUSE_ERROR_NAME); + Result importTask = epmetCommonServiceOpenFeignClient.createImportTask(importFormDTO); + if (!importTask.success()){ + throw new EpmetException("当前存在上传任务"); } - return new Result<>().error(9999,String.format(s,num,num)); + houseService.dispose(file,formDTO,importTask); + return new Result<>(); } } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java index a78ea28431..fba75d9432 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java @@ -19,6 +19,7 @@ package com.epmet.controller; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.dto.result.OptionResultDTO; +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.Result; @@ -27,8 +28,13 @@ import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.commons.tools.validator.group.AddGroup; import com.epmet.commons.tools.validator.group.DefaultGroup; import com.epmet.commons.tools.validator.group.UpdateGroup; +import com.epmet.constant.ImportErrorMsgConstants; +import com.epmet.constants.ImportTaskConstants; import com.epmet.dto.IcNeighborHoodDTO; import com.epmet.dto.form.ImportInfoFormDTO; +import com.epmet.dto.form.ImportTaskCommonFormDTO; +import com.epmet.dto.result.ImportTaskCommonResultDTO; +import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.service.IcNeighborHoodService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -51,6 +57,8 @@ public class IcNeighborHoodController { @Autowired private IcNeighborHoodService icNeighborHoodService; + @Autowired + private EpmetCommonServiceOpenFeignClient epmetCommonServiceOpenFeignClient; @GetMapping("page") public Result> page(@RequestParam Map params){ @@ -128,7 +136,16 @@ public class IcNeighborHoodController { formDTO.setOrgType(orgType); formDTO.setOrgId(orgId); formDTO.setUserId(tokenDTO.getUserId()); - return icNeighborHoodService.neighborhoodImport(formDTO,file); + ImportTaskCommonFormDTO importFormDTO = new ImportTaskCommonFormDTO(); + importFormDTO.setBizType(ImportTaskConstants.BIZ_TYPE_NEIGHBOR_HOOD); + importFormDTO.setOperatorId(formDTO.getUserId()); + importFormDTO.setOriginFileName(ImportErrorMsgConstants.NEIGHBORHOOD_ERROR_NAME); + Result importTask = epmetCommonServiceOpenFeignClient.createImportTask(importFormDTO); + if (!importTask.success()){ + throw new EpmetException("当前存在上传任务"); + } + icNeighborHoodService.neighborhoodImport(formDTO,file,importTask); + return new Result(); } } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/BuildingService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/BuildingService.java index 240c24d454..a5d84c4d7d 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/BuildingService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/BuildingService.java @@ -25,6 +25,7 @@ import com.epmet.dto.form.ListIcNeighborHoodFormDTO; import com.epmet.dto.result.BuildingResultDTO; import com.epmet.dto.result.BuildingResultPagedDTO; import com.epmet.dto.result.IcNeighborHoodResultDTO; +import com.epmet.dto.result.ImportTaskCommonResultDTO; import com.epmet.excel.IcBuildingExcel; import org.springframework.web.multipart.MultipartFile; @@ -74,6 +75,6 @@ public interface BuildingService { * @author zxc * @date 2022/2/13 10:18 上午 */ - Result buildingImportExcel(ImportInfoFormDTO formDTO, MultipartFile file) throws IOException; + Result buildingImportExcel(ImportInfoFormDTO formDTO, MultipartFile file,Result importTask) throws IOException; } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/HouseService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/HouseService.java index ad5d1d69cb..c7a065024e 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/HouseService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/HouseService.java @@ -17,11 +17,15 @@ package com.epmet.service; +import com.epmet.commons.tools.utils.Result; import com.epmet.dto.form.IcHouseFormDTO; +import com.epmet.dto.form.ImportInfoFormDTO; import com.epmet.dto.form.ListIcNeighborHoodFormDTO; import com.epmet.dto.result.HouseInfoDTO; import com.epmet.dto.result.IcNeighborHoodResultDTO; +import com.epmet.dto.result.ImportTaskCommonResultDTO; import com.epmet.excel.IcHouseExcel; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.util.List; @@ -62,4 +66,6 @@ public interface HouseService { void exportBuildinginfo(ListIcNeighborHoodFormDTO formDTO, HttpServletResponse response) throws Exception; List queryListHouseInfo(Set houseIds, String customerId); + + Result dispose(MultipartFile file, ImportInfoFormDTO formDTO, Result importTask); } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java index 7bfa4733e0..17eb160a64 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java @@ -24,6 +24,7 @@ import com.epmet.commons.tools.utils.Result; import com.epmet.dto.IcNeighborHoodDTO; import com.epmet.dto.ImportGeneralDTO; import com.epmet.dto.form.ImportInfoFormDTO; +import com.epmet.dto.result.ImportTaskCommonResultDTO; import com.epmet.entity.IcNeighborHoodEntity; import com.epmet.entity.IcNeighborHoodPropertyEntity; import com.epmet.entity.IcPropertyManagementEntity; @@ -128,7 +129,7 @@ public interface IcNeighborHoodService extends BaseService * @author zxc * @date 2022/2/12 11:11 上午 */ - Result neighborhoodImport(ImportInfoFormDTO formDTO, MultipartFile file) throws IOException; + void neighborhoodImport(ImportInfoFormDTO formDTO, MultipartFile file,Result importTask) throws IOException; /** * 获取导入小区,楼栋,单元ID diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java index e1c02d91e5..b617540160 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java @@ -46,6 +46,8 @@ import com.epmet.util.ExcelPoiUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; +import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; @@ -61,6 +63,7 @@ import java.util.stream.Collectors; @Slf4j @Service +@EnableAsync public class BuildingServiceImpl implements BuildingService { @@ -401,7 +404,8 @@ public class BuildingServiceImpl implements BuildingService { * @date 2022/2/13 10:15 上午 */ @Override - public Result buildingImportExcel(ImportInfoFormDTO formDTO, MultipartFile file) throws IOException { + @Async + public Result buildingImportExcel(ImportInfoFormDTO formDTO, MultipartFile file,Result importTask) throws IOException { ExcelReader excelReader = null; try { InputStream inputStream = null; @@ -410,14 +414,6 @@ public class BuildingServiceImpl implements BuildingService { } catch (IOException e) { return new Result().error("读取文件失败"); } - ImportTaskCommonFormDTO importFormDTO = new ImportTaskCommonFormDTO(); - importFormDTO.setBizType(ImportTaskConstants.BIZ_TYPE_BUILDING); - importFormDTO.setOperatorId(formDTO.getUserId()); - importFormDTO.setOriginFileName(ImportErrorMsgConstants.BUILDING_ERROR_NAME); - Result importTask = epmetCommonServiceOpenFeignClient.createImportTask(importFormDTO); - if (!importTask.success()){ - throw new EpmetException("创建任务失败"); - } excelReader = EasyExcel.read(inputStream).build(); // 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener ReadSheet readSheet = EasyExcel.readSheet(0).head(BuildingInfoModel.class) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java index 4c809cb812..a03ce7099b 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java @@ -2,6 +2,9 @@ package com.epmet.service.impl; import cn.afterturn.easypoi.excel.entity.TemplateExportParams; import cn.hutool.core.bean.BeanUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.ExcelReader; +import com.alibaba.excel.read.metadata.ReadSheet; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.epmet.commons.tools.constant.NumConstant; @@ -14,6 +17,7 @@ import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.feign.ResultDataResolver; import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.utils.Result; import com.epmet.dao.IcBuildingDao; import com.epmet.dao.IcBuildingUnitDao; import com.epmet.dao.IcHouseDao; @@ -23,15 +27,20 @@ import com.epmet.dto.IcBuildingDTO; import com.epmet.dto.IcBuildingUnitDTO; import com.epmet.dto.IcHouseDTO; import com.epmet.dto.form.IcHouseFormDTO; +import com.epmet.dto.form.ImportInfoFormDTO; import com.epmet.dto.form.ListIcNeighborHoodFormDTO; import com.epmet.dto.result.HouseInfoDTO; import com.epmet.dto.result.IcNeighborHoodResultDTO; +import com.epmet.dto.result.ImportTaskCommonResultDTO; import com.epmet.entity.IcHouseEntity; import com.epmet.enums.HousePurposeEnums; import com.epmet.enums.HouseRentFlagEnums; import com.epmet.enums.HouseTypeEnums; import com.epmet.excel.IcHouseExcel; +import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.feign.GovOrgOpenFeignClient; +import com.epmet.model.HouseInfoModel; +import com.epmet.model.ImportHouseInfoListener; import com.epmet.redis.IcHouseRedis; import com.epmet.service.HouseService; import com.epmet.service.IcBuildingService; @@ -42,17 +51,23 @@ import com.epmet.util.ExcelPoiUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; +import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.InputStream; import java.util.*; import java.util.stream.Collectors; @Slf4j @Service +@EnableAsync public class HouseServiceImpl implements HouseService, ResultDataResolver { @@ -77,6 +92,11 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver { private IcHouseRedis icHouseRedis; @Autowired private AgencyService agencyservice; + @Autowired + private IcNeighborHoodService neighborHoodService; + @Autowired + private EpmetCommonServiceOpenFeignClient epmetCommonServiceOpenFeignClient; + @Override @@ -329,4 +349,29 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver { }); return result; } + + @Async + @Override + public Result dispose(MultipartFile file, ImportInfoFormDTO formDTO, Result importTask) { + ExcelReader excelReader = null; + try { + InputStream inputStream = null; + try { + inputStream = file.getInputStream(); + } catch (IOException e) { + return new Result().error("读取文件失败"); + } + excelReader = EasyExcel.read(inputStream).build(); + // 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener + ReadSheet readSheet = EasyExcel.readSheet(0).head(HouseInfoModel.class) + .registerReadListener(new ImportHouseInfoListener(formDTO,icBuildingDao,icHouseRedis,neighborHoodService,icHouseService,epmetCommonServiceOpenFeignClient,importTask.getData().getTaskId())) + .build(); + excelReader.read(readSheet); + } finally { + if (excelReader != null) { + excelReader.finish(); + } + } + return new Result(); + } } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java index c86831ef00..6215d19304 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java @@ -73,6 +73,8 @@ import org.apache.commons.lang3.StringUtils; import org.apache.http.entity.ContentType; import org.apache.poi.ss.usermodel.Workbook; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; +import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; @@ -93,6 +95,7 @@ import java.util.stream.Collectors; */ @Slf4j @Service +@EnableAsync public class IcNeighborHoodServiceImpl extends BaseServiceImpl implements IcNeighborHoodService { @Autowired @@ -230,21 +233,9 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl importResult = ExcelPoiUtils.importExcelMore(file, 0, 1, IcNeighborHoodExcel.class); - List failList = importResult.getFailList(); - //存放错误数据行号 - List numList = new ArrayList<>(); - if(CollectionUtils.isNotEmpty(failList)){ - for ( IcNeighborHoodExcel entity : failList) { - //打印失败的行 和失败的信息 - log.error("第{}行,{}",entity.getRowNum(),entity.getErrorMsg()); - numList.add(entity.getRowNum()); - } - } - List result =importResult.getList(); - return disposeImportNeighborhood(formDTO,result);*/ - return importNeighbor(formDTO,file); + @Async + public void neighborhoodImport(ImportInfoFormDTO formDTO, MultipartFile file,Result importTask) throws IOException { + importNeighbor(formDTO,file,importTask); } /** @@ -407,7 +398,7 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl importTask){ ExcelReader excelReader = null; try { InputStream inputStream = null; @@ -416,14 +407,7 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl().error("读取文件失败"); } - ImportTaskCommonFormDTO importFormDTO = new ImportTaskCommonFormDTO(); - importFormDTO.setBizType(ImportTaskConstants.BIZ_TYPE_NEIGHBOR_HOOD); - importFormDTO.setOperatorId(formDTO.getUserId()); - importFormDTO.setOriginFileName(ImportErrorMsgConstants.NEIGHBORHOOD_ERROR_NAME); - Result importTask = epmetCommonServiceOpenFeignClient.createImportTask(importFormDTO); - if (!importTask.success()){ - throw new EpmetException("创建任务失败"); - } + excelReader = EasyExcel.read(inputStream).build(); // 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener ReadSheet readSheet = EasyExcel.readSheet(0).head(NeighborHoodInfoModel.class) @@ -435,19 +419,8 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl(); - } - List nums = dto.getNums(); - Integer num = dto.getNum(); - String s = "共%s条数据,导入成功%s条。"; - if (nums.size() > NumConstant.ZERO){ - Collections.sort(nums); - s = s + "第"+nums.stream().map(String::valueOf).collect(Collectors.joining("、"))+"条导入失败"; - return new Result<>().error(9999,String.format(s,num,num - nums.size())); - } - return new Result<>().error(9999,String.format(s,num,num)); + + return new Result<>(); } /** From 0fd46d97c6e498d70c058ab4eeaa74efd2a11d01 Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Fri, 25 Feb 2022 17:19:31 +0800 Subject: [PATCH 037/115] =?UTF-8?q?=E8=81=94=E5=BB=BA=E5=8D=95=E4=BD=8D?= =?UTF-8?q?=E5=92=8C=E8=81=94=E5=BB=BA=E6=B4=BB=E5=8A=A8=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/constants/ImportTaskConstants.java | 2 + .../controller/IcPartyActivityController.java | 66 ++++- .../controller/IcPartyUnitController.java | 77 +++++- .../IcPartyActivityImportFailedExcel.java | 38 +++ .../excel/IcPartyUnitImportFailedExcel.java | 38 +++ .../epmet/service/IcPartyActivityService.java | 3 +- .../com/epmet/service/IcPartyUnitService.java | 3 +- .../impl/IcPartyActivityServiceImpl.java | 261 +++++++++++++----- .../service/impl/IcPartyUnitServiceImpl.java | 197 ++++++++++--- 9 files changed, 559 insertions(+), 126 deletions(-) create mode 100644 epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/IcPartyActivityImportFailedExcel.java create mode 100644 epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/IcPartyUnitImportFailedExcel.java diff --git a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/constants/ImportTaskConstants.java b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/constants/ImportTaskConstants.java index 82e25887b7..6212a35cb6 100644 --- a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/constants/ImportTaskConstants.java +++ b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/constants/ImportTaskConstants.java @@ -13,6 +13,8 @@ public interface ImportTaskConstants { String BIZ_TYPE_HOUSE = "house"; String BIZ_TYPE_PARTY_MEMBER = "party_member"; String BIZ_TYPE_COMMUNITY_SELF_ORG = "community_self_org"; + String BIZ_TYPE_PARTY_UNIT = "party_unit"; + String BIZ_TYPE_PARTY_ACTIVITY = "party_activity"; /** * 处理状态:处理中 diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcPartyActivityController.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcPartyActivityController.java index 5071fd8710..75de3a06d6 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcPartyActivityController.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcPartyActivityController.java @@ -19,6 +19,8 @@ package com.epmet.controller; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.aop.NoRepeatSubmit; +import com.epmet.commons.tools.exception.ExceptionUtils; +import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.DateUtils; @@ -27,20 +29,28 @@ import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.commons.tools.validator.group.AddGroup; import com.epmet.commons.tools.validator.group.DefaultGroup; +import com.epmet.constants.ImportTaskConstants; import com.epmet.dto.IcPartyActivityDTO; +import com.epmet.dto.form.ImportTaskCommonFormDTO; import com.epmet.dto.form.PartyActivityFormDTO; +import com.epmet.dto.result.ImportTaskCommonResultDTO; import com.epmet.dto.result.demand.OptionDTO; import com.epmet.excel.IcPartyActivityExcel; +import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.service.IcPartyActivityService; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.io.FilenameUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.CompletableFuture; import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; @@ -51,12 +61,15 @@ import java.util.stream.Collectors; * @author generator generator@elink-cn.com * @since v1.0.0 2021-11-19 */ +@Slf4j @RestController @RequestMapping("icpartyactivity") public class IcPartyActivityController { @Autowired private IcPartyActivityService icPartyActivityService; + @Resource + private EpmetCommonServiceOpenFeignClient commonServiceOpenFeignClient; @PostMapping("search") public Result> page(@RequestBody PartyActivityFormDTO formDTO){ @@ -116,7 +129,58 @@ public class IcPartyActivityController { */ @PostMapping("import") public Result importData(@LoginUser TokenDto tokenDto, HttpServletResponse response, @RequestPart("file") MultipartFile file) throws IOException { - return icPartyActivityService.importData(tokenDto, response, file); + if (file.isEmpty()) { + throw new RenException("请上传文件"); + } + + String originalFilename = file.getOriginalFilename(); + // 校验文件类型 + String extension = FilenameUtils.getExtension(originalFilename); + if (!"xls".equals(extension) && !"xlsx".equals(extension)) { + throw new RenException("文件类型不匹配"); + } + + //1.查询当前工作人员是否有再导入的党员先锋数据,有则不允许导入,没有则进行新的导入 + ImportTaskCommonFormDTO importTaskForm = new ImportTaskCommonFormDTO(); + importTaskForm.setOriginFileName(file.getOriginalFilename()); + importTaskForm.setOperatorId(tokenDto.getUserId()); + importTaskForm.setBizType(ImportTaskConstants.BIZ_TYPE_PARTY_UNIT); + Result result = commonServiceOpenFeignClient.createImportTask(importTaskForm); + if (!result.success()) { + throw new RenException(result.getInternalMsg()); + } + + // 异步执行导入 + CompletableFuture.runAsync(() -> { + try { + Thread.sleep(1000L); + } catch (InterruptedException e) { + e.printStackTrace(); + } + submitResiImportTask(tokenDto, response, file, result.getData().getTaskId()); + }); + return new Result(); + } + + private void submitResiImportTask(TokenDto tokenDto, HttpServletResponse response, MultipartFile file, String importTaskId) { + + try { + icPartyActivityService.importData(tokenDto, response, file, importTaskId); + } catch (Throwable e) { + String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e); + log.error("【导入联建活动信息失败】导入失败:{}", errorMsg); + + ImportTaskCommonFormDTO importTaskForm = new ImportTaskCommonFormDTO(); + importTaskForm.setOperatorId(tokenDto.getUserId()); + importTaskForm.setBizType(ImportTaskConstants.BIZ_TYPE_PARTY_ACTIVITY); + importTaskForm.setTaskId(importTaskId); + importTaskForm.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL); + importTaskForm.setResultDesc("联建活动信息导入失败,请查看系统日志"); + Result result = commonServiceOpenFeignClient.finishImportTask(importTaskForm); + if (!result.success()) { + throw new RenException(result.getInternalMsg()); + } + } } /** diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcPartyUnitController.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcPartyUnitController.java index 5aaf4863fb..817e1657a9 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcPartyUnitController.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcPartyUnitController.java @@ -21,6 +21,8 @@ import com.epmet.commons.rocketmq.messages.ServerSatisfactionCalFormDTO; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.aop.NoRepeatSubmit; import com.epmet.commons.tools.dto.result.OptionDataResultDTO; +import com.epmet.commons.tools.exception.ExceptionUtils; +import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.ExcelUtils; @@ -29,23 +31,33 @@ import com.epmet.commons.tools.validator.AssertUtils; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.commons.tools.validator.group.AddGroup; import com.epmet.commons.tools.validator.group.DefaultGroup; +import com.epmet.constants.ImportTaskConstants; import com.epmet.dto.IcPartyUnitDTO; +import com.epmet.dto.form.ImportTaskCommonFormDTO; import com.epmet.dto.form.PartyActivityFormDTO; import com.epmet.dto.form.PartyUnitFormDTO; import com.epmet.dto.form.demand.ServiceQueryFormDTO; +import com.epmet.dto.result.ImportTaskCommonResultDTO; import com.epmet.dto.result.PartyUnitDistributionResultDTO; import com.epmet.dto.result.demand.OptionDTO; import com.epmet.excel.IcPartyUnitExcel; +import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.service.IcPartyUnitService; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.io.FilenameUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.nio.file.Path; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.CompletableFuture; import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; @@ -56,12 +68,21 @@ import java.util.stream.Collectors; * @author generator generator@elink-cn.com * @since v1.0.0 2021-11-19 */ +@Slf4j @RestController @RequestMapping("icpartyunit") public class IcPartyUnitController { @Autowired private IcPartyUnitService icPartyUnitService; + @Resource + private EpmetCommonServiceOpenFeignClient commonServiceOpenFeignClient; + + /** + * 联建单位上传临时目录 + */ + private Path IC_PARTY_UNIT_UPLOAD_DIR; + @PostMapping("list") public Result> search(@LoginUser TokenDto tokenDto, @RequestBody PartyUnitFormDTO formDTO){ @@ -151,8 +172,39 @@ public class IcPartyUnitController { * @Date 2021/11/30 14:42 */ @PostMapping("import") - public Result importData(@LoginUser TokenDto tokenDto, HttpServletResponse response, @RequestPart("file") MultipartFile file) throws IOException { - return icPartyUnitService.importData(tokenDto, response, file); + public Result importData(@LoginUser TokenDto tokenDto, HttpServletRequest multipartRequest, HttpServletResponse response, @RequestPart("file") MultipartFile file) throws IOException { + + if (file.isEmpty()) { + throw new RenException("请上传文件"); + } + + String originalFilename = file.getOriginalFilename(); + // 校验文件类型 + String extension = FilenameUtils.getExtension(originalFilename); + if (!"xls".equals(extension) && !"xlsx".equals(extension)) { + throw new RenException("文件类型不匹配"); + } + + //1.查询当前工作人员是否有再导入的党员先锋数据,有则不允许导入,没有则进行新的导入 + ImportTaskCommonFormDTO importTaskForm = new ImportTaskCommonFormDTO(); + importTaskForm.setOriginFileName(file.getOriginalFilename()); + importTaskForm.setOperatorId(tokenDto.getUserId()); + importTaskForm.setBizType(ImportTaskConstants.BIZ_TYPE_PARTY_UNIT); + Result result = commonServiceOpenFeignClient.createImportTask(importTaskForm); + if (!result.success()) { + throw new RenException(result.getInternalMsg()); + } + + // 异步执行导入 + CompletableFuture.runAsync(() -> { + try { + Thread.sleep(1000L); + } catch (InterruptedException e) { + e.printStackTrace(); + } + submitResiImportTask(tokenDto, response, file, result.getData().getTaskId()); + }); + return new Result(); } /** @@ -194,4 +246,25 @@ public class IcPartyUnitController { icPartyUnitService.calPartyUnitSatisfation(formDTO); return new Result(); } + + private void submitResiImportTask(TokenDto tokenDto, HttpServletResponse response, MultipartFile file, String importTaskId) { + + try { + icPartyUnitService.importData(tokenDto, response, file, importTaskId); + } catch (Throwable e) { + String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e); + log.error("【导入联建单位信息失败】导入失败:{}", errorMsg); + + ImportTaskCommonFormDTO importTaskForm = new ImportTaskCommonFormDTO(); + importTaskForm.setOperatorId(tokenDto.getUserId()); + importTaskForm.setBizType(ImportTaskConstants.BIZ_TYPE_PARTY_UNIT); + importTaskForm.setTaskId(importTaskId); + importTaskForm.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL); + importTaskForm.setResultDesc("联建单位信息导入失败,请查看系统日志"); + Result result = commonServiceOpenFeignClient.finishImportTask(importTaskForm); + if (!result.success()) { + throw new RenException(result.getInternalMsg()); + } + } + } } \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/IcPartyActivityImportFailedExcel.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/IcPartyActivityImportFailedExcel.java new file mode 100644 index 0000000000..7ee7a96358 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/IcPartyActivityImportFailedExcel.java @@ -0,0 +1,38 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * 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. + *

+ * 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. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.excel; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import com.epmet.commons.tools.utils.ExcelVerifyInfo; +import lombok.Data; + +/** + * 联建活动 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-11-19 + */ +@Data +public class IcPartyActivityImportFailedExcel extends ExcelVerifyInfo { + + @Excel(name = "活动标题", width = 40) + private String title; + + @Excel(name = "错误信息", width = 50) + private String errorInfo; +} \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/IcPartyUnitImportFailedExcel.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/IcPartyUnitImportFailedExcel.java new file mode 100644 index 0000000000..2cd7e44e2a --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/IcPartyUnitImportFailedExcel.java @@ -0,0 +1,38 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * 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. + *

+ * 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. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.excel; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import com.epmet.commons.tools.utils.ExcelVerifyInfo; +import lombok.Data; + +/** + * 联建单位 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-11-19 + */ +@Data +public class IcPartyUnitImportFailedExcel extends ExcelVerifyInfo { + + @Excel(name = "单位名称", width = 40) + private String unitName; + + @Excel(name = "错误信息", width = 50) + private String errorInfo; +} \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcPartyActivityService.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcPartyActivityService.java index c36db9b2d6..6fe8225b11 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcPartyActivityService.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcPartyActivityService.java @@ -20,7 +20,6 @@ package com.epmet.service; import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; -import com.epmet.commons.tools.utils.Result; import com.epmet.dto.IcPartyActivityDTO; import com.epmet.dto.form.PartyActivityFormDTO; import com.epmet.dto.result.demand.OptionDTO; @@ -98,7 +97,7 @@ public interface IcPartyActivityService extends BaseService { * @Author zhaoqifeng * @Date 2021/11/29 11:01 */ - Result importData(TokenDto tokenDto, HttpServletResponse response, MultipartFile file) throws IOException; + void importData(TokenDto tokenDto, HttpServletResponse response, MultipartFile file, String taskId) throws IOException; /** * @Description 按类型统计单位数量 diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyActivityServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyActivityServiceImpl.java index 503466278a..b72739dbbc 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyActivityServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyActivityServiceImpl.java @@ -17,13 +17,16 @@ package com.epmet.service.impl; +import cn.afterturn.easypoi.excel.ExcelExportUtil; +import cn.afterturn.easypoi.excel.entity.ExportParams; import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.ExceptionUtils; +import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.security.dto.TokenDto; @@ -31,29 +34,42 @@ import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.utils.ExcelPoiUtils; import com.epmet.commons.tools.utils.Result; +import com.epmet.constants.ImportTaskConstants; import com.epmet.dao.IcPartyActivityDao; import com.epmet.dto.IcPartyActivityDTO; import com.epmet.dto.IcPartyUnitDTO; +import com.epmet.dto.form.ImportTaskCommonFormDTO; import com.epmet.dto.form.PartyActivityFormDTO; import com.epmet.dto.result.ActivityStatisticsDTO; +import com.epmet.dto.result.UploadImgResultDTO; import com.epmet.dto.result.demand.OptionDTO; import com.epmet.entity.IcActivityServiceRelationEntity; import com.epmet.entity.IcActivityUnitRelationEntity; import com.epmet.entity.IcPartyActivityEntity; import com.epmet.excel.IcPartyActivityImportExcel; +import com.epmet.excel.IcPartyActivityImportFailedExcel; +import com.epmet.feign.EpmetCommonServiceOpenFeignClient; +import com.epmet.feign.OssFeignClient; import com.epmet.service.*; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.fileupload.FileItem; +import org.apache.commons.fileupload.FileItemFactory; +import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.lang3.StringUtils; +import org.apache.http.entity.ContentType; +import org.apache.poi.ss.usermodel.Workbook; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.commons.CommonsMultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.io.OutputStream; import java.util.*; import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; @@ -76,7 +92,10 @@ public class IcPartyActivityServiceImpl extends BaseServiceImpl fileList = new ArrayList<>(); ExcelImportResult importResult = ExcelPoiUtils.importExcelMore(file, 0, 1, IcPartyActivityImportExcel.class); List failList = importResult.getFailList(); //存放错误数据行号 - List numList = new ArrayList<>(); if (!org.springframework.util.CollectionUtils.isEmpty(failList)) { for (IcPartyActivityImportExcel entity : failList) { //打印失败的行 和失败的信息 log.warn("第{}行,{}", entity.getRowNum(), entity.getErrorMsg()); - numList.add(entity.getRowNum()); + IcPartyActivityImportFailedExcel failed = ConvertUtils.sourceToTarget(entity, IcPartyActivityImportFailedExcel.class); + failed.setErrorInfo(entity.getErrorMsg()); + fileList.add(failed); } } List result = importResult.getList(); @@ -262,14 +283,18 @@ public class IcPartyActivityServiceImpl extends BaseServiceImpl%s", obj.getRowNum())); iterator.remove(); } else { List unitList = Arrays.asList(obj.getUnitName().split(StrConstant.COMMA)); unitList.forEach(unit -> { if (null == option.get(unit)) { - numList.add(obj.getRowNum()); + IcPartyActivityImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyActivityImportFailedExcel.class); + failed.setErrorInfo("单位名称不存在"); + fileList.add(failed); log.warn(String.format("单位名称不存在,行号->%s", obj.getRowNum())); iterator.remove(); } @@ -277,14 +302,18 @@ public class IcPartyActivityServiceImpl extends BaseServiceImpl%s", obj.getRowNum())); iterator.remove(); } else { List serviceList = Arrays.asList(obj.getServiceMatter().split(StrConstant.SEMICOLON)); serviceList.forEach(service -> { if (null == categoryMap.get(service)) { - numList.add(obj.getRowNum()); + IcPartyActivityImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyActivityImportFailedExcel.class); + failed.setErrorInfo("服务事项不存在"); + fileList.add(failed); log.warn(String.format("服务事项不存在,行号->%s", obj.getRowNum())); iterator.remove(); } @@ -292,79 +321,163 @@ public class IcPartyActivityServiceImpl extends BaseServiceImpl%s", obj.getRowNum())); + if(StringUtils.isBlank(obj.getTitle())) { + IcPartyActivityImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyActivityImportFailedExcel.class); + failed.setErrorInfo("活动标题为空"); + fileList.add(failed); + log.warn(String.format("活动标题为空,行号->%s", obj.getRowNum())); iterator.remove(); + } else if(StringUtils.isBlank(obj.getTarget())) { + IcPartyActivityImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyActivityImportFailedExcel.class); + failed.setErrorInfo("活动目标为空"); + fileList.add(failed); + log.warn(String.format("活动目标为空,行号->%s", obj.getRowNum())); + } else if(StringUtils.isBlank(obj.getContent())) { + IcPartyActivityImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyActivityImportFailedExcel.class); + failed.setErrorInfo("活动内容为空"); + fileList.add(failed); + log.warn(String.format("活动内容为空,行号->%s", obj.getRowNum())); + } else if(StringUtils.isBlank(obj.getActivityTime())) { + IcPartyActivityImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyActivityImportFailedExcel.class); + failed.setErrorInfo("活动时间为空"); + fileList.add(failed); + log.warn(String.format("活动时间为空,行号->%s", obj.getRowNum())); + } else if(StringUtils.isBlank(obj.getAddress())) { + IcPartyActivityImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyActivityImportFailedExcel.class); + failed.setErrorInfo("活动地址为空"); + fileList.add(failed); + log.warn(String.format("活动地址为空,行号->%s", obj.getRowNum())); + } else if(StringUtils.isBlank(obj.getLatitude())) { + IcPartyActivityImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyActivityImportFailedExcel.class); + failed.setErrorInfo("活动地址纬度为空"); + fileList.add(failed); + log.warn(String.format("活动地址纬度为空,行号->%s", obj.getRowNum())); + } else if(StringUtils.isBlank(obj.getLongitude())) { + IcPartyActivityImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyActivityImportFailedExcel.class); + failed.setErrorInfo("活动地址经度为空"); + fileList.add(failed); + log.warn(String.format("活动地址经度为空,行号->%s", obj.getRowNum())); + } else if(StringUtils.isBlank(obj.getResult())) { + IcPartyActivityImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyActivityImportFailedExcel.class); + failed.setErrorInfo("活动结果为空"); + fileList.add(failed); + log.warn(String.format("活动结果为空,行号->%s", obj.getRowNum())); } } - if (CollectionUtils.isEmpty(result)) { - Collections.sort(numList); - String subList = numList.stream().map(String::valueOf).collect(Collectors.joining("、")); - return new Result().error(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "第" + subList + "行未成功!"); + if (CollectionUtils.isNotEmpty(result)) { + result.forEach(item -> { + IcPartyActivityEntity entity = new IcPartyActivityEntity(); + entity.setCustomerId(tokenDto.getCustomerId()); + entity.setAgencyId(staffInfoCache.getAgencyId()); + entity.setPids(staffInfoCache.getAgencyPIds()); + entity.setTitle(item.getTitle()); + entity.setTarget(item.getTarget()); + entity.setContent(item.getContent()); + entity.setPeopleCount(item.getPeopleCount()); + entity.setActivityTime(DateUtils.parse(item.getActivityTime(), DateUtils.DATE_TIME_PATTERN)); + entity.setAddress(item.getAddress()); + entity.setLatitude(item.getLatitude()); + entity.setLongitude(item.getLongitude()); + entity.setResult(item.getResult()); + insert(entity); + + //保存活动与单位关系 + icActivityUnitRelationService.deleteByActivity(entity.getId()); + AtomicInteger i = new AtomicInteger(NumConstant.ONE); + List unitRelationList = Arrays.stream(item.getUnitName().split(StrConstant.COMMA)).map(unit -> { + IcActivityUnitRelationEntity relation = new IcActivityUnitRelationEntity(); + relation.setCustomerId(entity.getCustomerId()); + relation.setAgencyId(entity.getAgencyId()); + relation.setPids(entity.getPids()); + relation.setActivityId(entity.getId()); + relation.setUnitId(option.get(unit)); + relation.setSort(i.getAndIncrement()); + return relation; + }).collect(Collectors.toList()); + icActivityUnitRelationService.insertBatch(unitRelationList); + + //保存活动与服务关系 + icActivityServiceRelationService.deleteByActivity(entity.getId()); + AtomicInteger j = new AtomicInteger(NumConstant.ONE); + List serviceRelationList = Arrays.stream(item.getServiceMatter().split(StrConstant.SEMICOLON)).map(service -> { + IcActivityServiceRelationEntity relation = new IcActivityServiceRelationEntity(); + relation.setCustomerId(entity.getCustomerId()); + relation.setAgencyId(entity.getAgencyId()); + relation.setPids(entity.getPids()); + relation.setActivityId(entity.getId()); + relation.setServiceMatter(categoryMap.get(service)); + relation.setSort(j.getAndIncrement()); + return relation; + }).collect(Collectors.toList()); + icActivityServiceRelationService.insertBatch(serviceRelationList); + }); } + String str = String.format("共%s条,成功导入%s条。", fileList.size() + result.size(), fileList.size() + result.size() - fileList.size()); - result.forEach(item -> { - IcPartyActivityEntity entity = new IcPartyActivityEntity(); - entity.setCustomerId(tokenDto.getCustomerId()); - entity.setAgencyId(staffInfoCache.getAgencyId()); - entity.setPids(staffInfoCache.getAgencyPIds()); - entity.setTitle(item.getTitle()); - entity.setTarget(item.getTarget()); - entity.setContent(item.getContent()); - entity.setPeopleCount(item.getPeopleCount()); - entity.setActivityTime(DateUtils.parse(item.getActivityTime(), DateUtils.DATE_TIME_PATTERN)); - entity.setAddress(item.getAddress()); - entity.setLatitude(item.getLatitude()); - entity.setLongitude(item.getLongitude()); - entity.setResult(item.getResult()); - insert(entity); - - //保存活动与单位关系 - icActivityUnitRelationService.deleteByActivity(entity.getId()); - AtomicInteger i = new AtomicInteger(NumConstant.ONE); - List unitRelationList = Arrays.stream(item.getUnitName().split(StrConstant.COMMA)).map(unit -> { - IcActivityUnitRelationEntity relation = new IcActivityUnitRelationEntity(); - relation.setCustomerId(entity.getCustomerId()); - relation.setAgencyId(entity.getAgencyId()); - relation.setPids(entity.getPids()); - relation.setActivityId(entity.getId()); - relation.setUnitId(option.get(unit)); - relation.setSort(i.getAndIncrement()); - return relation; - }).collect(Collectors.toList()); - icActivityUnitRelationService.insertBatch(unitRelationList); - - //保存活动与服务关系 - icActivityServiceRelationService.deleteByActivity(entity.getId()); - AtomicInteger j = new AtomicInteger(NumConstant.ONE); - List serviceRelationList = Arrays.stream(item.getServiceMatter().split(StrConstant.SEMICOLON)).map(service -> { - IcActivityServiceRelationEntity relation = new IcActivityServiceRelationEntity(); - relation.setCustomerId(entity.getCustomerId()); - relation.setAgencyId(entity.getAgencyId()); - relation.setPids(entity.getPids()); - relation.setActivityId(entity.getId()); - relation.setServiceMatter(categoryMap.get(service)); - relation.setSort(j.getAndIncrement()); - return relation; - }).collect(Collectors.toList()); - icActivityServiceRelationService.insertBatch(serviceRelationList); - }); - - String str = String.format("共%s条,成功导入%s条。", numList.size() + result.size(), numList.size() + result.size() - numList.size()); - if (numList.size() > NumConstant.ZERO) { - Collections.sort(numList); + if (fileList.size() > NumConstant.ZERO) { + List numList = fileList.stream().map(IcPartyActivityImportFailedExcel::getRowNum).sorted().collect(Collectors.toList()); String subList = numList.stream().map(String::valueOf).collect(Collectors.joining("、")); log.warn(str + "第" + subList + "行未成功!"); - return new Result().error(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), str + "第" + subList + "行未成功!"); } - return new Result().ok(str); + + //错误数据生成文件,修改导入任务状态 + erroeImport(fileList, taskId, tokenDto.getUserId()); + } + + private void erroeImport(List fileList, String importTaskId, String staffId) throws IOException { + String url = ""; + //1.有错误数据则生成错误数据存放文件传到阿里云服务 + if (CollectionUtils.isNotEmpty(fileList)) { + Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("导入失败的数据列表", "导入失败的数据列表"), + IcPartyActivityImportFailedExcel.class, fileList); + // 文件名 + String resultDescFileName = UUID.randomUUID().toString().concat(".xlsx"); + FileItemFactory factory = new DiskFileItemFactory(16, null); + FileItem fileItem = factory.createItem("file", ContentType.APPLICATION_OCTET_STREAM.toString(), true, resultDescFileName); + OutputStream os = fileItem.getOutputStream(); + Result uploadResult = null; + try { + workbook.write(os); + uploadResult = ossFeignClient.uploadImportTaskDescFile(new CommonsMultipartFile(fileItem)); + } catch (Exception e) { + String errormsg = ExceptionUtils.getErrorStackTrace(e); + log.error("【联建活动信息导入】上传错误描述文件:{}", errormsg); + } finally { + try { + os.close(); + } catch (IOException e) { + String errormsg = ExceptionUtils.getErrorStackTrace(e); + log.error("【联建活动信息导入】上传错误描述文件关闭输出流:{}", errormsg); + } + try { + fileItem.delete(); + } catch (Exception e) { + String errormsg = ExceptionUtils.getErrorStackTrace(e); + log.error("【联建活动信息导入】上传错误描述文件删除临时文件:{}", errormsg); + } + } + + if (uploadResult == null || !uploadResult.success()) { + log.error("【联建活动信息导入】调用OSS上传结果描述文件失败"); + } else { + url = uploadResult.getData().getUrl(); + } + } + //2.更新导入任务数据 + ImportTaskCommonFormDTO importTaskForm = new ImportTaskCommonFormDTO(); + importTaskForm.setOperatorId(staffId); + importTaskForm.setBizType(ImportTaskConstants.BIZ_TYPE_PARTY_ACTIVITY); + importTaskForm.setTaskId(importTaskId); + importTaskForm.setResultDescFilePath(url); + importTaskForm.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_SUCCESS); + if (CollectionUtils.isNotEmpty(fileList)) { + importTaskForm.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL); + importTaskForm.setResultDesc("联建活动导入存在错误数据"); + } + Result result = commonServiceOpenFeignClient.finishImportTask(importTaskForm); + if (!result.success()) { + throw new RenException(result.getInternalMsg()); + } } /** diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyUnitServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyUnitServiceImpl.java index 2849e6ae42..3924261510 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyUnitServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyUnitServiceImpl.java @@ -17,6 +17,8 @@ package com.epmet.service.impl; +import cn.afterturn.easypoi.excel.ExcelExportUtil; +import cn.afterturn.easypoi.excel.entity.ExportParams; import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -34,6 +36,8 @@ import com.epmet.commons.tools.enums.DictTypeEnum; import com.epmet.commons.tools.enums.PartyUnitTypeEnum; 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.page.PageData; import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.security.dto.TokenDto; @@ -41,17 +45,23 @@ import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.ExcelPoiUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.constant.UserDemandConstant; +import com.epmet.constants.ImportTaskConstants; import com.epmet.dao.IcPartyUnitDao; import com.epmet.dto.IcPartyUnitDTO; +import com.epmet.dto.form.ImportTaskCommonFormDTO; import com.epmet.dto.form.PartyActivityFormDTO; import com.epmet.dto.form.PartyUnitFormDTO; import com.epmet.dto.form.demand.ServiceQueryFormDTO; import com.epmet.dto.result.PartyUnitDistributionResultDTO; +import com.epmet.dto.result.UploadImgResultDTO; import com.epmet.dto.result.demand.OptionDTO; import com.epmet.dto.result.demand.ServiceStatDTO; import com.epmet.entity.IcPartyUnitEntity; import com.epmet.excel.IcPartyUnitImportExcel; +import com.epmet.excel.IcPartyUnitImportFailedExcel; import com.epmet.feign.EpmetAdminOpenFeignClient; +import com.epmet.feign.EpmetCommonServiceOpenFeignClient; +import com.epmet.feign.OssFeignClient; import com.epmet.service.IcPartyUnitService; import com.epmet.service.IcResiDemandDictService; import com.epmet.service.IcServiceItemDictService; @@ -60,14 +70,21 @@ import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.fileupload.FileItem; +import org.apache.commons.fileupload.FileItemFactory; +import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.lang3.StringUtils; +import org.apache.http.entity.ContentType; +import org.apache.poi.ss.usermodel.Workbook; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.commons.CommonsMultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.io.OutputStream; import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; @@ -90,6 +107,10 @@ public class IcPartyUnitServiceImpl extends BaseServiceImpl search(PartyUnitFormDTO formDTO) { @@ -303,16 +324,19 @@ public class IcPartyUnitServiceImpl extends BaseServiceImpl fileList = new ArrayList<>(); + ExcelImportResult importResult = ExcelPoiUtils.importExcelMore(file, 0, 1, IcPartyUnitImportExcel.class); List failList = importResult.getFailList(); //存放错误数据行号 - List numList = new ArrayList<>(); if (!org.springframework.util.CollectionUtils.isEmpty(failList)) { for (IcPartyUnitImportExcel entity : failList) { //打印失败的行 和失败的信息 log.warn("第{}行,{}", entity.getRowNum(), entity.getErrorMsg()); - numList.add(entity.getRowNum()); + IcPartyUnitImportFailedExcel failed = ConvertUtils.sourceToTarget(entity, IcPartyUnitImportFailedExcel.class); + failed.setErrorInfo(entity.getErrorMsg()); + fileList.add(failed); } } List result = importResult.getList(); @@ -329,7 +353,9 @@ public class IcPartyUnitServiceImpl extends BaseServiceImpl%s", obj.getRowNum())); iterator.remove(); } else { @@ -338,14 +364,18 @@ public class IcPartyUnitServiceImpl extends BaseServiceImpl list = baseDao.selectList(wrapper); if (CollectionUtils.isNotEmpty(list)) { - numList.add(obj.getRowNum()); + IcPartyUnitImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyUnitImportFailedExcel.class); + failed.setErrorInfo("单位名称已存在"); + fileList.add(failed); log.warn(String.format("单位名称已存在,行号->%s", obj.getRowNum())); iterator.remove(); } } //分类校验 if (StringUtils.isBlank(obj.getType()) || null == PartyUnitTypeEnum.getCode(obj.getType())) { - numList.add(obj.getRowNum()); + IcPartyUnitImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyUnitImportFailedExcel.class); + failed.setErrorInfo("分类名不存在"); + fileList.add(failed); log.warn(String.format("分类名不存在,行号->%s", obj.getRowNum())); iterator.remove(); } @@ -354,62 +384,139 @@ public class IcPartyUnitServiceImpl extends BaseServiceImpl matters = Arrays.asList(obj.getServiceMatter().split(StrConstant.COLON)); matters.forEach(item -> { if (null == categoryMap.get(item)) { - numList.add(obj.getRowNum()); + IcPartyUnitImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyUnitImportFailedExcel.class); + failed.setErrorInfo("服务事项不存在"); + fileList.add(failed); log.warn(String.format("服务事项不存在,行号->%s", obj.getRowNum())); iterator.remove(); } }); } //联系人 联系电话 在职党员 地址 中心位置经度 中心位置纬度 校验 - if (StringUtils.isBlank(obj.getContact()) || StringUtils.isBlank(obj.getContactMobile()) || - StringUtils.isBlank(obj.getContact()) || - null == obj.getMemberCount() || - StringUtils.isBlank(obj.getLatitude()) || - StringUtils.isBlank(obj.getLongitude())) { - numList.add(obj.getRowNum()); - log.warn(String.format("联系人、联系电话、在职党员、地址、中心位置经度、中心位置纬度为空,行号->%s", obj.getRowNum())); + if (StringUtils.isBlank(obj.getContact())) { + IcPartyUnitImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyUnitImportFailedExcel.class); + failed.setErrorInfo("联系人为空"); + fileList.add(failed); + log.warn(String.format("联系人为空,行号->%s", obj.getRowNum())); iterator.remove(); + } else if (StringUtils.isBlank(obj.getContactMobile())) { + IcPartyUnitImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyUnitImportFailedExcel.class); + failed.setErrorInfo("联系电话为空"); + fileList.add(failed); + log.warn(String.format("联系电话为空,行号->%s", obj.getRowNum())); + } else if (StringUtils.isBlank(obj.getAddress())) { + IcPartyUnitImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyUnitImportFailedExcel.class); + failed.setErrorInfo("地址为空"); + fileList.add(failed); + log.warn(String.format("地址为空,行号->%s", obj.getRowNum())); + } else if (null == obj.getMemberCount()) { + IcPartyUnitImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyUnitImportFailedExcel.class); + failed.setErrorInfo("在职党员为空"); + fileList.add(failed); + log.warn(String.format("在职党员为空,行号->%s", obj.getRowNum())); + } else if (StringUtils.isBlank(obj.getLatitude())) { + IcPartyUnitImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyUnitImportFailedExcel.class); + failed.setErrorInfo("中心位置纬度为空"); + fileList.add(failed); + log.warn(String.format("中心位置纬度为空,行号->%s", obj.getRowNum())); + } else if (StringUtils.isBlank(obj.getLongitude())) { + IcPartyUnitImportFailedExcel failed = ConvertUtils.sourceToTarget(obj, IcPartyUnitImportFailedExcel.class); + failed.setErrorInfo("中心位置经度为空"); + fileList.add(failed); + log.warn(String.format("中心位置经度为空,行号->%s", obj.getRowNum())); } } - if (CollectionUtils.isEmpty(result)) { - Collections.sort(numList); - String subList = numList.stream().map(String::valueOf).collect(Collectors.joining("、")); - return new Result().error(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "第" + subList + "行未成功!"); - } - - List list = result.stream().map(item -> { - IcPartyUnitEntity entity = new IcPartyUnitEntity(); - entity.setCustomerId(tokenDto.getCustomerId()); - entity.setAgencyId(staffInfoCache.getAgencyId()); - entity.setPids(staffInfoCache.getAgencyPIds()); - entity.setUnitName(item.getUnitName()); - entity.setType(PartyUnitTypeEnum.getCode(item.getType())); - if (StringUtils.isNotBlank(item.getServiceMatter())) { - entity.setServiceMatter(getServiceMatter(categoryMap, item.getServiceMatter())); - } - entity.setContact(item.getContact()); - entity.setContactMobile(item.getContactMobile()); - entity.setAddress(item.getAddress()); - entity.setLatitude(item.getLatitude()); - entity.setLongitude(item.getLongitude()); - entity.setMemberCount(item.getMemberCount()); - entity.setRemark(item.getRemark()); - return entity; - }).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(result)) { + List list = result.stream().map(item -> { + IcPartyUnitEntity entity = new IcPartyUnitEntity(); + entity.setCustomerId(tokenDto.getCustomerId()); + entity.setAgencyId(staffInfoCache.getAgencyId()); + entity.setPids(staffInfoCache.getAgencyPIds()); + entity.setUnitName(item.getUnitName()); + entity.setType(PartyUnitTypeEnum.getCode(item.getType())); + if (StringUtils.isNotBlank(item.getServiceMatter())) { + entity.setServiceMatter(getServiceMatter(categoryMap, item.getServiceMatter())); + } + entity.setContact(item.getContact()); + entity.setContactMobile(item.getContactMobile()); + entity.setAddress(item.getAddress()); + entity.setLatitude(item.getLatitude()); + entity.setLongitude(item.getLongitude()); + entity.setMemberCount(item.getMemberCount()); + entity.setRemark(item.getRemark()); + return entity; + }).collect(Collectors.toList()); - insertBatch(list); + insertBatch(list); + } - String str = String.format("共%s条,成功导入%s条。", numList.size() + result.size(), numList.size() + result.size() - numList.size()); - if (numList.size() > NumConstant.ZERO) { - Collections.sort(numList); + String str = String.format("共%s条,成功导入%s条。", fileList.size() + result.size(), fileList.size() + result.size() - fileList.size()); + if (fileList.size() > NumConstant.ZERO) { + List numList = fileList.stream().map(IcPartyUnitImportFailedExcel::getRowNum).sorted().collect(Collectors.toList()); String subList = numList.stream().map(String::valueOf).collect(Collectors.joining("、")); log.warn(str + "第" + subList + "行未成功!"); - return new Result().error(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), str + "第" + subList + "行未成功!"); } - return new Result().ok(str); + + //错误数据生成文件,修改导入任务状态 + erroeImport(fileList, taskId, tokenDto.getUserId()); } + private void erroeImport(List fileList, String importTaskId, String staffId) throws IOException { + String url = ""; + //1.有错误数据则生成错误数据存放文件传到阿里云服务 + if (CollectionUtils.isNotEmpty(fileList)) { + Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("导入失败的数据列表", "导入失败的数据列表"), + IcPartyUnitImportFailedExcel.class, fileList); + // 文件名 + String resultDescFileName = UUID.randomUUID().toString().concat(".xlsx"); + FileItemFactory factory = new DiskFileItemFactory(16, null); + FileItem fileItem = factory.createItem("file", ContentType.APPLICATION_OCTET_STREAM.toString(), true, resultDescFileName); + OutputStream os = fileItem.getOutputStream(); + Result uploadResult = null; + try { + workbook.write(os); + uploadResult = ossFeignClient.uploadImportTaskDescFile(new CommonsMultipartFile(fileItem)); + } catch (Exception e) { + String errormsg = ExceptionUtils.getErrorStackTrace(e); + log.error("【联建单位信息导入】上传错误描述文件:{}", errormsg); + } finally { + try { + os.close(); + } catch (IOException e) { + String errormsg = ExceptionUtils.getErrorStackTrace(e); + log.error("【联建单位信息导入】上传错误描述文件关闭输出流:{}", errormsg); + } + try { + fileItem.delete(); + } catch (Exception e) { + String errormsg = ExceptionUtils.getErrorStackTrace(e); + log.error("【联建单位信息导入】上传错误描述文件删除临时文件:{}", errormsg); + } + } + + if (uploadResult == null || !uploadResult.success()) { + log.error("【联建单位信息导入】调用OSS上传结果描述文件失败"); + } else { + url = uploadResult.getData().getUrl(); + } + } + //2.更新导入任务数据 + ImportTaskCommonFormDTO importTaskForm = new ImportTaskCommonFormDTO(); + importTaskForm.setOperatorId(staffId); + importTaskForm.setBizType(ImportTaskConstants.BIZ_TYPE_PARTY_UNIT); + importTaskForm.setTaskId(importTaskId); + importTaskForm.setResultDescFilePath(url); + importTaskForm.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_SUCCESS); + if (CollectionUtils.isNotEmpty(fileList)) { + importTaskForm.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL); + importTaskForm.setResultDesc("联建单位导入存在错误数据"); + } + Result result = commonServiceOpenFeignClient.finishImportTask(importTaskForm); + if (!result.success()) { + throw new RenException(result.getInternalMsg()); + } + } /** * @param formDTO * @Description 按类型统计单位数量 From c9e439d8f9f907752b88da9c829ab252a3dc115b Mon Sep 17 00:00:00 2001 From: jianjun Date: Mon, 28 Feb 2022 14:02:48 +0800 Subject: [PATCH 038/115] =?UTF-8?q?gateway=20commonservice=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E9=94=99=E8=AF=AF=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- epmet-gateway/src/main/resources/bootstrap.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/epmet-gateway/src/main/resources/bootstrap.yml b/epmet-gateway/src/main/resources/bootstrap.yml index c8c245b15a..598f8d7518 100644 --- a/epmet-gateway/src/main/resources/bootstrap.yml +++ b/epmet-gateway/src/main/resources/bootstrap.yml @@ -234,6 +234,7 @@ spring: - Path=${server.servlet.context-path}/commonservice/** filters: - StripPrefix=1 + - CpAuth=true #党建园地 - id: resi-home-server uri: @gateway.routes.resi-home-server.uri@ From f1605f009a43b997dcafba0c0ac17dc332403fe0 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Mon, 28 Feb 2022 14:19:10 +0800 Subject: [PATCH 039/115] =?UTF-8?q?=E9=80=80=E7=BE=A4=E5=8A=A0=E4=B8=AA?= =?UTF-8?q?=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/resi/group/dto/member/ResiGroupMemberDTO.java | 2 +- .../epmet/modules/group/controller/ExitGroupController.java | 2 ++ .../epmet/modules/group/service/impl/ExitGroupServiceImpl.java | 3 ++- .../com/epmet/modules/member/entity/ResiGroupMemberEntity.java | 2 +- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/ResiGroupMemberDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/ResiGroupMemberDTO.java index a64ebdb042..9244410c3b 100644 --- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/ResiGroupMemberDTO.java +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/ResiGroupMemberDTO.java @@ -65,7 +65,7 @@ public class ResiGroupMemberDTO implements Serializable { private String groupInvitationId; /** - * 状态:( 审核通过 - approved、 已禁言 - silent、 被移出群 - removed) + * 状态:( 审核通过 - approved、 已禁言 - silent、 被移出群 - removed)exit:退群 */ private String status; diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/controller/ExitGroupController.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/controller/ExitGroupController.java index ca8e7013fd..f49d0b2677 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/controller/ExitGroupController.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/controller/ExitGroupController.java @@ -1,6 +1,7 @@ package com.epmet.modules.group.controller; import com.epmet.commons.tools.annotation.LoginUser; +import com.epmet.commons.tools.aop.NoRepeatSubmit; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; @@ -54,6 +55,7 @@ public class ExitGroupController { * @description 组员自主退群 * @Date 2021/4/30 15:09 **/ + @NoRepeatSubmit @PostMapping("memexitgroup") public Result memExitGroup(@LoginUser TokenDto tokenDto, @RequestBody MemExitGroupFormDTO formDTO){ formDTO.setUserId(tokenDto.getUserId()); diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ExitGroupServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ExitGroupServiceImpl.java index 62e10b0303..f73a2e46c8 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ExitGroupServiceImpl.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ExitGroupServiceImpl.java @@ -2,6 +2,7 @@ package com.epmet.modules.group.service.impl; import com.epmet.commons.tools.constant.*; import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.utils.Result; import com.epmet.dto.form.UserRoleFormDTO; @@ -223,7 +224,7 @@ public class ExitGroupServiceImpl implements ExitGroupService { //1、当前组员是否还在群里? ResiGroupMemberDTO resiGroupMemberDTO=resiGroupMemberDao.selectGroupMemberInfo(formDTO.getGroupId(),formDTO.getUserId()); if(null == resiGroupMemberDTO){ - throw new RenException("已退出当前小组,请勿重复操作"); + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "已退出当前小组,请勿重复操作","已退出当前小组,请勿重复操作"); } //2、组长不允许退群,提示:请先转移组长身份后再退组 if(ModuleConstant.GROUP_LEADER.equals(resiGroupMemberDTO.getGroupLeaderFlag())){ diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/entity/ResiGroupMemberEntity.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/entity/ResiGroupMemberEntity.java index 0e21de29db..84f166b844 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/entity/ResiGroupMemberEntity.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/entity/ResiGroupMemberEntity.java @@ -63,7 +63,7 @@ public class ResiGroupMemberEntity extends BaseEpmetEntity { private String groupInvitationId; /** - * 状态:( 审核通过 - approved、 已禁言 - silent、 被移出群 - removed) + * 状态:( 审核通过 - approved、 已禁言 - silent、 被移出群 - removed)exit:退群 */ private String status; From 944702a47b3c5850f6f3729ee72c76a6706757c9 Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Tue, 1 Mar 2022 10:23:29 +0800 Subject: [PATCH 040/115] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/BuildingServiceImpl.java | 20 +++++++------------ .../epmet/service/impl/HouseServiceImpl.java | 8 ++++++++ .../impl/IcNeighborHoodServiceImpl.java | 6 ++++++ 3 files changed, 21 insertions(+), 13 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java index b617540160..7d3bbe9602 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java @@ -420,24 +420,18 @@ public class BuildingServiceImpl implements BuildingService { .registerReadListener(new ImportBuildingInfoListener(formDTO,icHouseRedis,icBuildingDao,neighborHoodService,epmetCommonServiceOpenFeignClient,importTask.getData().getTaskId())) .build(); excelReader.read(readSheet); + } catch (Exception e){ + ImportTaskCommonFormDTO input = new ImportTaskCommonFormDTO(); + input.setOperatorId(formDTO.getUserId()); + input.setTaskId(importTask.getData().getTaskId()); + input.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL); + epmetCommonServiceOpenFeignClient.finishImportTask(input); } finally { if (excelReader != null) { excelReader.finish(); } } - ImportResultDTO dto = icHouseRedis.getImportResultDTO(formDTO.getCustomerId(), formDTO.getUserId()); - if (null == dto){ - return new Result<>(); - } - List nums = dto.getNums(); - Integer num = dto.getNum(); - String s = "共%s条数据,导入成功%s条。"; - if (nums.size() > NumConstant.ZERO){ - Collections.sort(nums); - s = s + "第"+nums.stream().map(String::valueOf).collect(Collectors.joining("、"))+"条导入失败"; - return new Result<>().error(9999,String.format(s,num,num - nums.size())); - } - return new Result<>().error(9999,String.format(s,num,num)); + return new Result<>(); } private List searchAllBuilding(ListIcNeighborHoodFormDTO formDTO) { diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java index a03ce7099b..fa623a8950 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java @@ -18,6 +18,7 @@ import com.epmet.commons.tools.feign.ResultDataResolver; import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.Result; +import com.epmet.constants.ImportTaskConstants; import com.epmet.dao.IcBuildingDao; import com.epmet.dao.IcBuildingUnitDao; import com.epmet.dao.IcHouseDao; @@ -28,6 +29,7 @@ import com.epmet.dto.IcBuildingUnitDTO; import com.epmet.dto.IcHouseDTO; import com.epmet.dto.form.IcHouseFormDTO; import com.epmet.dto.form.ImportInfoFormDTO; +import com.epmet.dto.form.ImportTaskCommonFormDTO; import com.epmet.dto.form.ListIcNeighborHoodFormDTO; import com.epmet.dto.result.HouseInfoDTO; import com.epmet.dto.result.IcNeighborHoodResultDTO; @@ -367,6 +369,12 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver { .registerReadListener(new ImportHouseInfoListener(formDTO,icBuildingDao,icHouseRedis,neighborHoodService,icHouseService,epmetCommonServiceOpenFeignClient,importTask.getData().getTaskId())) .build(); excelReader.read(readSheet); + } catch (Exception e){ + ImportTaskCommonFormDTO input = new ImportTaskCommonFormDTO(); + input.setOperatorId(formDTO.getUserId()); + input.setTaskId(importTask.getData().getTaskId()); + input.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL); + epmetCommonServiceOpenFeignClient.finishImportTask(input); } finally { if (excelReader != null) { excelReader.finish(); diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java index 6215d19304..107fb203b2 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java @@ -414,6 +414,12 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl Date: Tue, 1 Mar 2022 10:30:00 +0800 Subject: [PATCH 041/115] =?UTF-8?q?=E5=AF=BC=E5=85=A5=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...cCommunitySelfOrganizationServiceImpl.java | 206 ++++++++++-------- .../impl/IcPartymemberStyleServiceImpl.java | 196 +++++++++-------- 2 files changed, 215 insertions(+), 187 deletions(-) diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcCommunitySelfOrganizationServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcCommunitySelfOrganizationServiceImpl.java index 8572ededf5..86f713e74d 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcCommunitySelfOrganizationServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcCommunitySelfOrganizationServiceImpl.java @@ -477,111 +477,117 @@ public class IcCommunitySelfOrganizationServiceImpl extends BaseServiceImpl fileList = new ArrayList<>(); - CommunitySelfOrgImportExcel excel = null; - //1.读取Excel数据 - ExcelImportResult testExcelImportResult = ExcelPoiUtils.importExcelMore(file, 0, 2, ImportCommunitySelfOrganization.class); - //2.存在错误行数据时存入错误数据集合中 - for (ImportCommunitySelfOrganization entity : testExcelImportResult.getFailList()) { - //打印失败的行 和失败的信息 - log.warn("第{}行,{}", entity.getRowNum(), entity.getErrorMsg()); - excel = new CommunitySelfOrgImportExcel(); - excel.setAgencyName(entity.getOrganizationName()); - excel.setSocietyName(entity.getOrganizationName()); - excel.setErrorInfo(entity.getErrorMsg()); - fileList.add(excel); - } - //正确行数据集合 - List list = testExcelImportResult.getList(); - if (CollectionUtils.isNotEmpty(list)){ - //3.分别判断导入数据是否是当前组织下数据、社会自组织名称是否已存在、手机号是否规范 - //3-1.查询当前组织下已从存在的社会自组织名称 - CustomerStaffInfoCacheResult staffInfoCache = CustomerStaffRedis.getStaffInfo(tokenDto.getCustomerId(), tokenDto.getUserId()); - //查询当前组织下的社会自组织数据 - List communitySeltOrgList = baseDao.selectOrgByCustomerId(tokenDto.getCustomerId()); - //组织信息 - AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(staffInfoCache.getAgencyId()); - //3-2.检验数据,把不允许导入的数据剔除 - Iterator iterator = list.iterator(); - while (iterator.hasNext()) { - AtomicBoolean bl = new AtomicBoolean(false); - StringBuffer errMsg = new StringBuffer(""); - ImportCommunitySelfOrganization obj = iterator.next(); - //社会自组织名称重复 - communitySeltOrgList.forEach(org -> { - if (obj.getOrganizationName().equals(org.getOrganizationName())) { - log.warn(String.format("当前客户下的社会自组织名称已存在,社会自组织名称->%s,行号->%s", obj.getOrganizationName(), obj.getRowNum())); - errMsg.append("客户下社会自组织名称已存在;"); + try { + List fileList = new ArrayList<>(); + CommunitySelfOrgImportExcel excel = null; + //1.读取Excel数据 + ExcelImportResult testExcelImportResult = ExcelPoiUtils.importExcelMore(file, 0, 2, ImportCommunitySelfOrganization.class); + //2.存在错误行数据时存入错误数据集合中 + for (ImportCommunitySelfOrganization entity : testExcelImportResult.getFailList()) { + //打印失败的行 和失败的信息 + log.warn("第{}行,{}", entity.getRowNum(), entity.getErrorMsg()); + excel = new CommunitySelfOrgImportExcel(); + excel.setAgencyName(entity.getOrganizationName()); + excel.setSocietyName(entity.getOrganizationName()); + excel.setErrorInfo(entity.getErrorMsg()); + fileList.add(excel); + } + //正确行数据集合 + List list = testExcelImportResult.getList(); + if (CollectionUtils.isNotEmpty(list)){ + //3.分别判断导入数据是否是当前组织下数据、社会自组织名称是否已存在、手机号是否规范 + //3-1.查询当前组织下已从存在的社会自组织名称 + CustomerStaffInfoCacheResult staffInfoCache = CustomerStaffRedis.getStaffInfo(tokenDto.getCustomerId(), tokenDto.getUserId()); + //查询当前组织下的社会自组织数据 + List communitySeltOrgList = baseDao.selectOrgByCustomerId(tokenDto.getCustomerId()); + //组织信息 + AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(staffInfoCache.getAgencyId()); + //3-2.检验数据,把不允许导入的数据剔除 + Iterator iterator = list.iterator(); + while (iterator.hasNext()) { + AtomicBoolean bl = new AtomicBoolean(false); + StringBuffer errMsg = new StringBuffer(""); + ImportCommunitySelfOrganization obj = iterator.next(); + //社会自组织名称重复 + communitySeltOrgList.forEach(org -> { + if (obj.getOrganizationName().equals(org.getOrganizationName())) { + log.warn(String.format("当前客户下的社会自组织名称已存在,社会自组织名称->%s,行号->%s", obj.getOrganizationName(), obj.getRowNum())); + errMsg.append("客户下社会自组织名称已存在;"); + bl.set(true); + } + }); + //手机号不合规 + boolean m = PhoneValidatorUtils.isMobile(obj.getPrincipalPhone()); + boolean t = PhoneValidatorUtils.isTel(obj.getPrincipalPhone()); + if (!m && !t){ + errMsg.append("手机号码不合法;"); bl.set(true); } - }); - //手机号不合规 - boolean m = PhoneValidatorUtils.isMobile(obj.getPrincipalPhone()); - boolean t = PhoneValidatorUtils.isTel(obj.getPrincipalPhone()); - if (!m && !t){ - errMsg.append("手机号码不合法;"); - bl.set(true); - } - if(bl.get()){ - excel = new CommunitySelfOrgImportExcel(); - excel.setAgencyName(obj.getOrganizationName()); - excel.setSocietyName(obj.getOrganizationName()); - excel.setErrorInfo(errMsg.toString()); - fileList.add(excel); - iterator.remove(); + if(bl.get()){ + excel = new CommunitySelfOrgImportExcel(); + excel.setAgencyName(obj.getOrganizationName()); + excel.setSocietyName(obj.getOrganizationName()); + excel.setErrorInfo(errMsg.toString()); + fileList.add(excel); + iterator.remove(); + } } - } - list.forEach(l -> { - IcCommunitySelfOrganizationEntity e = ConvertUtils.sourceToTarget(l, IcCommunitySelfOrganizationEntity.class); - e.setCustomerId(tokenDto.getCustomerId()); - e.setOrgId(agencyInfo.getId()); - e.setOrgType(IcCommunitySelfOrganizationConstant.ORG_TYPE_AGENCY); - e.setPid(agencyInfo.getPid()); - e.setPids(agencyInfo.getPids()); - e.setOrganizationCreatedTime(l.getOrganizationCreatedTime()); - baseDao.insert(e); - if (CollectionUtils.isNotEmpty(l.getPersons())){ - l.getPersons().forEach(p -> { - boolean m = PhoneValidatorUtils.isMobile(p.getPersonPhone()); - boolean t = PhoneValidatorUtils.isTel(p.getPersonPhone()); - if (!m && !t){ - throw new EpmetException(EpmetErrorCode.CHECK_PHONE_ERROR.getCode()); - } - }); - List persons = ConvertUtils.sourceToTarget(l.getPersons(), IcCommunitySelfOrganizationPersonnelEntity.class); - Map> groupByPhone = persons.stream().collect(Collectors.groupingBy(IcCommunitySelfOrganizationPersonnelEntity::getPersonPhone)); - List phones = new ArrayList<>(); - groupByPhone.forEach((k,v) -> { - if (v.size() > NumConstant.ONE){ - phones.add(k); + list.forEach(l -> { + IcCommunitySelfOrganizationEntity e = ConvertUtils.sourceToTarget(l, IcCommunitySelfOrganizationEntity.class); + e.setCustomerId(tokenDto.getCustomerId()); + e.setOrgId(agencyInfo.getId()); + e.setOrgType(IcCommunitySelfOrganizationConstant.ORG_TYPE_AGENCY); + e.setPid(agencyInfo.getPid()); + e.setPids(agencyInfo.getPids()); + e.setOrganizationCreatedTime(l.getOrganizationCreatedTime()); + baseDao.insert(e); + if (CollectionUtils.isNotEmpty(l.getPersons())){ + l.getPersons().forEach(p -> { + boolean m = PhoneValidatorUtils.isMobile(p.getPersonPhone()); + boolean t = PhoneValidatorUtils.isTel(p.getPersonPhone()); + if (!m && !t){ + throw new EpmetException(EpmetErrorCode.CHECK_PHONE_ERROR.getCode()); + } + }); + List persons = ConvertUtils.sourceToTarget(l.getPersons(), IcCommunitySelfOrganizationPersonnelEntity.class); + Map> groupByPhone = persons.stream().collect(Collectors.groupingBy(IcCommunitySelfOrganizationPersonnelEntity::getPersonPhone)); + List phones = new ArrayList<>(); + groupByPhone.forEach((k,v) -> { + if (v.size() > NumConstant.ONE){ + phones.add(k); + } + }); + if (CollectionUtils.isNotEmpty(phones)){ + StringBuffer sb = new StringBuffer(); + phones.forEach(p -> { + sb.append(p).append(","); + }); + String copywriter = sb.toString().substring(NumConstant.ZERO, sb.length() - NumConstant.ONE); + EpmetErrorCode.EXISTS_SAME_PHONE_ERROR.setMsg(String.format(EpmetErrorCode.EXISTS_SAME_PHONE_ERROR.getMsg(),copywriter)); + throw new RenException(EpmetErrorCode.EXISTS_SAME_PHONE_ERROR.getCode()); } - }); - if (CollectionUtils.isNotEmpty(phones)){ - StringBuffer sb = new StringBuffer(); - phones.forEach(p -> { - sb.append(p).append(","); + persons.forEach(p -> { + p.setCustomerId(tokenDto.getCustomerId()); + p.setOrgId(e.getId()); }); - String copywriter = sb.toString().substring(NumConstant.ZERO, sb.length() - NumConstant.ONE); - EpmetErrorCode.EXISTS_SAME_PHONE_ERROR.setMsg(String.format(EpmetErrorCode.EXISTS_SAME_PHONE_ERROR.getMsg(),copywriter)); - throw new RenException(EpmetErrorCode.EXISTS_SAME_PHONE_ERROR.getCode()); + personnelService.insertBatch(persons); } - persons.forEach(p -> { - p.setCustomerId(tokenDto.getCustomerId()); - p.setOrgId(e.getId()); - }); - personnelService.insertBatch(persons); - } - }); + }); + } + //4.错误数据生成文件,修改导入任务状态 + String url = erroeImport(fileList); + upImportTask(url, taskId, tokenDto.getUserId(), true); + } catch (Exception e) { + log.error("【社会自组织信息导入】程序错误"); + upImportTask(null, taskId, tokenDto.getUserId(), false); } - //4.错误数据生成文件,修改导入任务状态 - erroeImport(fileList, taskId, tokenDto.getUserId()); } /** * @Author sun - * @Description 社会自组织导入导入,错误数据生成导入失败文件存到阿里云,修改导入任务为已结束 + * @Description 社会自组织导入,错误数据生成导入失败文件存到阿里云,修改导入任务为已结束 **/ - private void erroeImport(List fileList, String importTaskId, String staffId) throws IOException { + private String erroeImport(List fileList) throws IOException { String url = ""; //1.有错误数据则生成错误数据存放文件传到阿里云服务 if (!org.springframework.util.CollectionUtils.isEmpty(fileList)) { @@ -620,16 +626,24 @@ public class IcCommunitySelfOrganizationServiceImpl extends BaseServiceImpl fileList = new ArrayList<>(); - PartyMemberImportExcel excel = null; - ExcelImportResult importResult = ExcelPoiUtils.importExcelMore(file, 0, 1, IcPartymemberStyleImportExcel.class); + try { + List fileList = new ArrayList<>(); + PartyMemberImportExcel excel = null; + ExcelImportResult importResult = ExcelPoiUtils.importExcelMore(file, 0, 1, IcPartymemberStyleImportExcel.class); - List failList = importResult.getFailList(); - //存放错误数据行号 - List numList = new ArrayList<>(); - if (!org.springframework.util.CollectionUtils.isEmpty(failList)) { - for (IcPartymemberStyleImportExcel entity : failList) { - //打印失败的行 和失败的信息 - log.warn("第{}行,{}", entity.getRowNum(), entity.getErrorMsg()); - numList.add(entity.getRowNum()); - excel = new PartyMemberImportExcel(); - excel.setGridName(entity.getGridName()); - excel.setName(entity.getName()); - excel.setMainDeed(entity.getMainDeed()); - excel.setCategoryName(entity.getCategoryName()); - excel.setErrorInfo(entity.getErrorMsg()); - fileList.add(excel); + List failList = importResult.getFailList(); + //存放错误数据行号 + List numList = new ArrayList<>(); + if (!org.springframework.util.CollectionUtils.isEmpty(failList)) { + for (IcPartymemberStyleImportExcel entity : failList) { + //打印失败的行 和失败的信息 + log.warn("第{}行,{}", entity.getRowNum(), entity.getErrorMsg()); + numList.add(entity.getRowNum()); + excel = new PartyMemberImportExcel(); + excel.setGridName(entity.getGridName()); + excel.setName(entity.getName()); + excel.setMainDeed(entity.getMainDeed()); + excel.setCategoryName(entity.getCategoryName()); + excel.setErrorInfo(entity.getErrorMsg()); + fileList.add(excel); + } } - } - List result = importResult.getList(); + List result = importResult.getList(); - CustomerStaffInfoCacheResult staffInfoCache = CustomerStaffRedis.getStaffInfo(tokenDto.getCustomerId(), tokenDto.getUserId()); - //获取组织下网格信息 - GridOptionFormDTO formDTO = new GridOptionFormDTO(); - formDTO.setAgencyId(staffInfoCache.getAgencyId()); - Result> gridOptionResult = govOrgOpenFeignClient.getGridIListByAgency(staffInfoCache.getAgencyId()); - if (!gridOptionResult.success()) { - throw new EpmetException(gridOptionResult.getCode(), gridOptionResult.getMsg()); - } - Map gridMap = gridOptionResult.getData().stream().collect(Collectors.toMap(CustomerGridDTO::getGridName, CustomerGridDTO::getId)); - //获取党员风采所有分类:key:分类名称; - Map categoryDictMap=icPartymemberStyleCategoryDictService.getCategoryDictMap(tokenDto.getCustomerId()); - //1.数据校验 只允许导入当前组织下的网格的数据 - //网格名称不一样的数据舍弃或者分类名称不存在也舍弃 - Iterator iterator = result.iterator(); - while (iterator.hasNext()) { - IcPartymemberStyleImportExcel obj = iterator.next(); - if (null == gridMap.get(obj.getGridName().trim())) { - numList.add(obj.getRowNum()); - log.warn(String.format("不是当前组织下可导入的数据,网格名称->%s,行号->%s", obj.getGridName(), obj.getRowNum())); - excel = new PartyMemberImportExcel(); - excel.setGridName(obj.getGridName()); - excel.setName(obj.getName()); - excel.setMainDeed(obj.getMainDeed()); - excel.setCategoryName(obj.getCategoryName()); - excel.setErrorInfo("不是当前组织下网格"); - fileList.add(excel); - iterator.remove(); - continue; + CustomerStaffInfoCacheResult staffInfoCache = CustomerStaffRedis.getStaffInfo(tokenDto.getCustomerId(), tokenDto.getUserId()); + //获取组织下网格信息 + GridOptionFormDTO formDTO = new GridOptionFormDTO(); + formDTO.setAgencyId(staffInfoCache.getAgencyId()); + Result> gridOptionResult = govOrgOpenFeignClient.getGridIListByAgency(staffInfoCache.getAgencyId()); + if (!gridOptionResult.success()) { + throw new EpmetException(gridOptionResult.getCode(), gridOptionResult.getMsg()); } - if (null == categoryDictMap.get(obj.getCategoryName().trim())) { - numList.add(obj.getRowNum()); - log.warn(String.format("分类名称【%s】不存在,不可导入,行号->%s", obj.getCategoryName(), obj.getRowNum())); - excel = new PartyMemberImportExcel(); - excel.setGridName(obj.getGridName()); - excel.setName(obj.getName()); - excel.setMainDeed(obj.getMainDeed()); - excel.setCategoryName(obj.getCategoryName()); - excel.setErrorInfo("分类名称不存在"); - fileList.add(excel); - iterator.remove(); + Map gridMap = gridOptionResult.getData().stream().collect(Collectors.toMap(CustomerGridDTO::getGridName, CustomerGridDTO::getId)); + //获取党员风采所有分类:key:分类名称; + Map categoryDictMap=icPartymemberStyleCategoryDictService.getCategoryDictMap(tokenDto.getCustomerId()); + //1.数据校验 只允许导入当前组织下的网格的数据 + //网格名称不一样的数据舍弃或者分类名称不存在也舍弃 + Iterator iterator = result.iterator(); + while (iterator.hasNext()) { + IcPartymemberStyleImportExcel obj = iterator.next(); + if (null == gridMap.get(obj.getGridName().trim())) { + numList.add(obj.getRowNum()); + log.warn(String.format("不是当前组织下可导入的数据,网格名称->%s,行号->%s", obj.getGridName(), obj.getRowNum())); + excel = new PartyMemberImportExcel(); + excel.setGridName(obj.getGridName()); + excel.setName(obj.getName()); + excel.setMainDeed(obj.getMainDeed()); + excel.setCategoryName(obj.getCategoryName()); + excel.setErrorInfo("不是当前组织下网格"); + fileList.add(excel); + iterator.remove(); + continue; + } + if (null == categoryDictMap.get(obj.getCategoryName().trim())) { + numList.add(obj.getRowNum()); + log.warn(String.format("分类名称【%s】不存在,不可导入,行号->%s", obj.getCategoryName(), obj.getRowNum())); + excel = new PartyMemberImportExcel(); + excel.setGridName(obj.getGridName()); + excel.setName(obj.getName()); + excel.setMainDeed(obj.getMainDeed()); + excel.setCategoryName(obj.getCategoryName()); + excel.setErrorInfo("分类名称不存在"); + fileList.add(excel); + iterator.remove(); + } } - } - if (CollectionUtils.isEmpty(result)) { + if (CollectionUtils.isEmpty(result)) { /*Collections.sort(numList); String subList = numList.stream().map(String::valueOf).collect(Collectors.joining("、")); return new Result().error(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "第" + subList + "行未成功!");*/ - erroeImport(fileList, taskId, tokenDto.getUserId()); - return; - } - List imageList = new ArrayList<>(); - List list = result.stream().map(item -> { - IcPartymemberStyleEntity entity = new IcPartymemberStyleEntity(); - entity.setId(UUID.randomUUID().toString().replace("-", "")); - entity.setCustomerId(tokenDto.getCustomerId()); - entity.setAgencyId(staffInfoCache.getAgencyId()); - entity.setGridId(gridMap.get(item.getGridName())); - GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(entity.getGridId()); - if (null != gridInfo) { - entity.setGridPids(gridInfo.getPids()); + erroeImport(fileList); + return; } - entity.setName(item.getName()); - entity.setMainDeed(item.getMainDeed()); - IcPartymemberStyleCategoryDictEntity dictEntity=categoryDictMap.get(item.getCategoryName()); - entity.setCategoryId(null == dictEntity ? StrConstant.EPMETY_STR : dictEntity.getId()); - entity.setCategoryCode(null == dictEntity ? StrConstant.EPMETY_STR : dictEntity.getCategoryCode()); - AtomicInteger i = new AtomicInteger(); - return entity; - }).collect(Collectors.toList()); + List imageList = new ArrayList<>(); + List list = result.stream().map(item -> { + IcPartymemberStyleEntity entity = new IcPartymemberStyleEntity(); + entity.setId(UUID.randomUUID().toString().replace("-", "")); + entity.setCustomerId(tokenDto.getCustomerId()); + entity.setAgencyId(staffInfoCache.getAgencyId()); + entity.setGridId(gridMap.get(item.getGridName())); + GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(entity.getGridId()); + if (null != gridInfo) { + entity.setGridPids(gridInfo.getPids()); + } + entity.setName(item.getName()); + entity.setMainDeed(item.getMainDeed()); + IcPartymemberStyleCategoryDictEntity dictEntity=categoryDictMap.get(item.getCategoryName()); + entity.setCategoryId(null == dictEntity ? StrConstant.EPMETY_STR : dictEntity.getId()); + entity.setCategoryCode(null == dictEntity ? StrConstant.EPMETY_STR : dictEntity.getCategoryCode()); + AtomicInteger i = new AtomicInteger(); + return entity; + }).collect(Collectors.toList()); - insertBatch(list); - icPartymemberStyleImageService.insertBatch(imageList); + insertBatch(list); + icPartymemberStyleImageService.insertBatch(imageList); /*String str = String.format("共%s条,成功导入%s条。", numList.size() + result.size(), numList.size() + result.size() - numList.size()); if (numList.size() > NumConstant.ZERO) { @@ -363,14 +364,19 @@ public class IcPartymemberStyleServiceImpl extends BaseServiceImpl fileList, String importTaskId, String staffId) throws IOException { + private String erroeImport(List fileList) throws IOException { String url = ""; //1.有错误数据则生成错误数据存放文件传到阿里云服务 if (!org.springframework.util.CollectionUtils.isEmpty(fileList)) { @@ -409,16 +415,24 @@ public class IcPartymemberStyleServiceImpl extends BaseServiceImpl Date: Tue, 1 Mar 2022 15:09:39 +0800 Subject: [PATCH 042/115] =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9A=20common-to?= =?UTF-8?q?ols=E5=A2=9E=E5=8A=A0=E9=80=9A=E7=94=A8=E7=BA=BF=E7=A8=8B?= =?UTF-8?q?=E6=B1=A0=E9=85=8D=E7=BD=AE=E7=B1=BB=20=E6=AF=8F=E4=B8=AA?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=A2=9E=E5=8A=A0=E7=BA=BF=E7=A8=8B=E6=B1=A0?= =?UTF-8?q?=E9=85=8D=E7=BD=AExml=E5=92=8Cyml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- epmet-admin/epmet-admin-server/pom.xml | 36 +++++++ .../src/main/resources/bootstrap.yml | 13 ++- epmet-auth/pom.xml | 36 +++++++ epmet-auth/src/main/resources/bootstrap.yml | 12 +++ .../commons/tools/config/AsyncConfig.java | 93 +++++++++++++++++++ .../config/EpmetThreadPoolProperties.java | 47 ++++++++++ .../data-aggregator-server/pom.xml | 36 +++++++ .../src/main/resources/bootstrap.yml | 11 +++ .../data-report/data-report-server/pom.xml | 36 +++++++ .../src/main/resources/bootstrap.yml | 11 +++ .../data-statistical-server/pom.xml | 53 +++++++---- .../java/com/epmet/config/AsyncConfig.java | 49 ---------- .../src/main/resources/bootstrap.yml | 11 ++- .../epmet-activiti-server/pom.xml | 36 +++++++ .../src/main/resources/bootstrap.yml | 11 +++ .../common-service-server/pom.xml | 36 +++++++ .../src/main/resources/bootstrap.yml | 11 +++ .../epmet-ext/epmet-ext-server/pom.xml | 36 +++++++ .../src/main/resources/bootstrap.yml | 11 +++ .../epmet-heart/epmet-heart-server/pom.xml | 36 +++++++ .../src/main/resources/bootstrap.yml | 11 +++ .../epmet-message-server/pom.xml | 53 +++++++---- .../java/com/epmet/MessageApplication.java | 2 + .../java/com/epmet/config/AsyncConfig.java | 49 ---------- .../src/main/resources/bootstrap.yml | 12 ++- .../epmet-oss/epmet-oss-server/pom.xml | 36 +++++++ .../src/main/resources/bootstrap.yml | 11 +++ .../epmet-point/epmet-point-server/pom.xml | 56 +++++++---- .../java/com/epmet/EpmetPointApplication.java | 2 + .../java/com/epmet/config/AsyncConfig.java | 49 ---------- .../src/main/resources/bootstrap.yml | 11 ++- .../epmet-third/epmet-third-server/pom.xml | 36 +++++++ .../src/main/resources/bootstrap.yml | 13 ++- .../gov-access/gov-access-server/pom.xml | 36 +++++++ .../src/main/resources/bootstrap.yml | 13 ++- epmet-module/gov-grid/gov-grid-server/pom.xml | 36 +++++++ .../src/main/resources/bootstrap.yml | 11 +++ .../gov-issue/gov-issue-server/pom.xml | 36 +++++++ .../src/main/resources/bootstrap.yml | 11 +++ epmet-module/gov-mine/gov-mine-server/pom.xml | 36 +++++++ .../src/main/resources/bootstrap.yml | 11 +++ epmet-module/gov-org/gov-org-server/pom.xml | 35 +++++++ .../src/main/resources/bootstrap.yml | 11 +++ .../gov-project/gov-project-server/pom.xml | 36 +++++++ .../src/main/resources/bootstrap.yml | 11 +++ .../gov-voice/gov-voice-server/pom.xml | 36 +++++++ .../src/main/resources/bootstrap.yml | 11 +++ .../open-data-worker-server/pom.xml | 36 +++++++ .../src/main/resources/bootstrap.yml | 13 ++- .../oper-access/oper-access-server/pom.xml | 36 +++++++ .../src/main/resources/bootstrap.yml | 11 +++ epmet-module/oper-crm/oper-crm-server/pom.xml | 36 +++++++ .../src/main/resources/bootstrap.yml | 11 +++ .../oper-customize-server/pom.xml | 36 +++++++ .../src/main/resources/bootstrap.yml | 11 +++ .../resi-group/resi-group-server/pom.xml | 52 +++++++---- .../java/com/epmet/ResiGroupApplication.java | 2 + .../java/com/epmet/config/AsyncConfig.java | 49 ---------- .../src/main/resources/bootstrap.yml | 11 ++- epmet-openapi/epmet-openapi-scan/pom.xml | 35 +++++++ .../src/main/resources/bootstrap.yml | 11 +++ epmet-user/epmet-user-server/pom.xml | 36 +++++++ .../src/main/resources/bootstrap.yml | 11 +++ 63 files changed, 1394 insertions(+), 295 deletions(-) create mode 100644 epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/config/AsyncConfig.java create mode 100644 epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/config/EpmetThreadPoolProperties.java delete mode 100644 epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/config/AsyncConfig.java delete mode 100644 epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/config/AsyncConfig.java delete mode 100644 epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/config/AsyncConfig.java delete mode 100644 epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/config/AsyncConfig.java diff --git a/epmet-admin/epmet-admin-server/pom.xml b/epmet-admin/epmet-admin-server/pom.xml index c3b038a367..0b37977879 100644 --- a/epmet-admin/epmet-admin-server/pom.xml +++ b/epmet-admin/epmet-admin-server/pom.xml @@ -141,6 +141,15 @@ true 192.168.1.140:9876;192.168.1.141:9876 epmet_message + + + true + 5 + 8 + 20 + 60 + epmet-admin + callerRunsPolicy @@ -181,6 +190,15 @@ false 192.168.1.140:9876;192.168.1.141:9876 epmet_message + + + true + 5 + 8 + 20 + 60 + epmet-admin + callerRunsPolicy @@ -217,6 +235,15 @@ true 192.168.10.161:9876 epmet_message + + + true + 5 + 8 + 20 + 60 + epmet-admin + callerRunsPolicy @@ -254,6 +281,15 @@ true 192.168.11.187:9876;192.168.11.184:9876 epmet_message + + + true + 5 + 8 + 20 + 60 + epmet-admin + callerRunsPolicy diff --git a/epmet-admin/epmet-admin-server/src/main/resources/bootstrap.yml b/epmet-admin/epmet-admin-server/src/main/resources/bootstrap.yml index fc45940737..80503e260f 100644 --- a/epmet-admin/epmet-admin-server/src/main/resources/bootstrap.yml +++ b/epmet-admin/epmet-admin-server/src/main/resources/bootstrap.yml @@ -139,4 +139,15 @@ shutdown: rocketmq: enable: @rocketmq.enable@ - name-server: @rocketmq.nameserver@ \ No newline at end of file + name-server: @rocketmq.nameserver@ + +thread: + # 线程池配置 + threadPool: + enableCustomize: @thread.threadPool.enable-customize@ + corePoolSize: @thread.threadPool.core-pool-size@ + maxPoolSize: @thread.threadPool.max-pool-size@ + queueCapacity: @thread.threadPool.queue-capacity@ + keepAliveSeconds: @thread.threadPool.keep-alive-seconds@ + threadNamePrefix: @thread.threadPool.thread-name-prefix@ + rejectedExecutionHandler: @thread.threadPool.rejected-execution-handler@ \ No newline at end of file diff --git a/epmet-auth/pom.xml b/epmet-auth/pom.xml index 41b8b92296..b4c31f05cc 100644 --- a/epmet-auth/pom.xml +++ b/epmet-auth/pom.xml @@ -216,6 +216,15 @@ UUCnxLyXiB4eBF4p https://epmet-cloud.elinkservice.cn + + + true + 5 + 8 + 20 + 60 + epmet-auth + callerRunsPolicy @@ -273,6 +282,15 @@ UUCnxLyXiB4eBF4p https://epmet-cloud.elinkservice.cn + + + true + 5 + 8 + 20 + 60 + epmet-auth + callerRunsPolicy @@ -325,6 +343,15 @@ UUCnxLyXiB4eBF4p https://epmet-cloud.elinkservice.cn + + + true + 5 + 8 + 20 + 60 + epmet-auth + callerRunsPolicy @@ -382,6 +409,15 @@ UUCnxLyXiB4eBF4p https://epmet-cloud.elinkservice.cn + + + true + 5 + 8 + 20 + 60 + epmet-auth + callerRunsPolicy diff --git a/epmet-auth/src/main/resources/bootstrap.yml b/epmet-auth/src/main/resources/bootstrap.yml index bf965caff7..8cdc2c21db 100644 --- a/epmet-auth/src/main/resources/bootstrap.yml +++ b/epmet-auth/src/main/resources/bootstrap.yml @@ -159,3 +159,15 @@ epmet: # third服务的相关配置 third: urlPrefix: @epmet.third.urlprefix@ + + +thread: + # 线程池配置 + threadPool: + enableCustomize: @thread.threadPool.enable-customize@ + corePoolSize: @thread.threadPool.core-pool-size@ + maxPoolSize: @thread.threadPool.max-pool-size@ + queueCapacity: @thread.threadPool.queue-capacity@ + keepAliveSeconds: @thread.threadPool.keep-alive-seconds@ + threadNamePrefix: @thread.threadPool.thread-name-prefix@ + rejectedExecutionHandler: @thread.threadPool.rejected-execution-handler@ \ No newline at end of file diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/config/AsyncConfig.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/config/AsyncConfig.java new file mode 100644 index 0000000000..2778f3c9ef --- /dev/null +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/config/AsyncConfig.java @@ -0,0 +1,93 @@ +package com.epmet.commons.tools.config; + +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; + +import java.util.concurrent.Executor; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.RejectedExecutionHandler; +import java.util.concurrent.ThreadPoolExecutor; + +/** + * 线程池配置类 + * thread: + * # 线程池配置 + * threadPool: + * enableCustomize: true [true会使用自定义线程池,false则使用springboot自动配置的线程池。推荐使用自定义线程池] + * 可以只配置此参数,其他参会会使用默认值,但还是建议把参数配置全。 + * corePoolSize: 2 + * maxPoolSize: 4 + * queueCapacity: 2 + * keepAliveSeconds: 60 + * threadNamePrefix: [线程池名字] + * rejectedExecutionHandler: [拒绝策略] + * + * 顺序:核心线程->放入队列->未达到maxPoolSize则继续增加线程直到达到maxPoolSize->拒绝策略 + * 开启自定义线程池:thread.threadPool.enableCustomize=true,不配置或者配置为false,自定义线程池都不会开启 + * rejectedExecutionHandler拒绝策略:abortPolicy/discardPolicy/discardOldestPolicy/callerRunsPolicy(默认) + */ +@EnableConfigurationProperties(EpmetThreadPoolProperties.class) +@Configuration +@ConditionalOnProperty(prefix = "thread.threadPool", name = "enableCustomize", havingValue = "true", matchIfMissing = false) +public class AsyncConfig { + + /** + * 默认值 + */ + private int corePoolSize = 5; + private int maxPoolSize = 8; + private int queueCapacity = 20; + private String threadNamePrefix = "epmet-default-"; + private int keepAliveSeconds = 60; + private String rejectedExecutionHandler = "callerRunsPolicy"; + + public AsyncConfig(EpmetThreadPoolProperties properties) { + if (properties.getCorePoolSize() != null) corePoolSize = properties.getCorePoolSize(); + if (properties.getMaxPoolSize() != null) maxPoolSize = properties.getMaxPoolSize(); + if (properties.getQueueCapacity() != null) queueCapacity = properties.getQueueCapacity(); + if (properties.getThreadNamePrefix() != null) threadNamePrefix = properties.getThreadNamePrefix(); + if (properties.getKeepAliveSeconds() != null) keepAliveSeconds = properties.getKeepAliveSeconds(); + if (properties.getRejectedExecutionHandler() != null) rejectedExecutionHandler = properties.getRejectedExecutionHandler(); + } + + @Bean + public Executor executor() { + ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); + executor.setCorePoolSize(corePoolSize); + executor.setMaxPoolSize(maxPoolSize); + executor.setQueueCapacity(queueCapacity); + executor.setThreadNamePrefix(threadNamePrefix); + executor.setRejectedExecutionHandler(getRejectedExecutionHandler(rejectedExecutionHandler)); //对拒绝task的处理策略 + executor.setKeepAliveSeconds(keepAliveSeconds); + executor.initialize(); + return executor; + } + + @Bean + public ExecutorService executorService() { + ThreadPoolTaskExecutor executor = (ThreadPoolTaskExecutor) executor(); + return executor.getThreadPoolExecutor(); + } + + /** + * 获取拒绝策略handler + * @param policy + * @return + */ + private RejectedExecutionHandler getRejectedExecutionHandler(String policy) { + switch (policy) { + case "abortPolicy": + return new ThreadPoolExecutor.AbortPolicy(); + case "discardPolicy": + return new ThreadPoolExecutor.DiscardPolicy(); + case "discardOldestPolicy": + return new ThreadPoolExecutor.DiscardOldestPolicy(); + default: + // 默认情况下,使用主线程执行 + return new ThreadPoolExecutor.CallerRunsPolicy(); + } + } +} diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/config/EpmetThreadPoolProperties.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/config/EpmetThreadPoolProperties.java new file mode 100644 index 0000000000..1984a01dec --- /dev/null +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/config/EpmetThreadPoolProperties.java @@ -0,0 +1,47 @@ +package com.epmet.commons.tools.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; + +/** + * 线程池配置参数 + * thread-pool会自动对应到threadPool + */ +@ConfigurationProperties(prefix = "thread.thread-pool") +@Data +public class EpmetThreadPoolProperties { + + /** + * 是否允许自定义线程池 + */ + private Boolean enableCustomize; + /** + * 核心线程数 + */ + private Integer corePoolSize; + + /** + * 最大线程数 + */ + private Integer maxPoolSize; + + /** + * 队列容量 + */ + private Integer queueCapacity; + + /** + * 线程名前缀 + */ + private String threadNamePrefix; + + /** + * 线程存活时长 + */ + private Integer keepAliveSeconds; + + /** + * 拒绝策略 + */ + private String rejectedExecutionHandler; +} \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-server/pom.xml b/epmet-module/data-aggregator/data-aggregator-server/pom.xml index c66ced640a..f05b85d745 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/pom.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/pom.xml @@ -259,6 +259,15 @@ https://oapi.dingtalk.com/robot/send?access_token=e894e5690f9d6a527722974c71548ff6c0fe29bd956589a09e21b16442a35ed4 SECfcc020bdc83bb17a2c00f39977b1fbc409ef4188c7beaea11c5caa90eeaf87fd + + + true + 5 + 8 + 20 + 60 + data-aggregator + callerRunsPolicy @@ -375,6 +384,15 @@ https://oapi.dingtalk.com/robot/send?access_token=e894e5690f9d6a527722974c71548ff6c0fe29bd956589a09e21b16442a35ed4 SECfcc020bdc83bb17a2c00f39977b1fbc409ef4188c7beaea11c5caa90eeaf87fd + + + true + 5 + 8 + 20 + 60 + data-aggregator + callerRunsPolicy @@ -491,6 +509,15 @@ https://oapi.dingtalk.com/robot/send?access_token=e894e5690f9d6a527722974c71548ff6c0fe29bd956589a09e21b16442a35ed4 SECfcc020bdc83bb17a2c00f39977b1fbc409ef4188c7beaea11c5caa90eeaf87fd + + + true + 5 + 8 + 20 + 60 + data-aggregator + callerRunsPolicy @@ -608,6 +635,15 @@ https://oapi.dingtalk.com/robot/send?access_token=a5f66c3374b1642fe2142dbf56d5997e280172d4e8f2b546c9423a68c82ece6c SEC95f4f40b533ad379ea6a6d1af6dd37029383cfe1b7cd96dfac2678be2c1c3ed1 + + + true + 5 + 8 + 20 + 60 + data-aggregator + callerRunsPolicy diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/bootstrap.yml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/bootstrap.yml index 934dcae2c5..9df581e38f 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/bootstrap.yml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/bootstrap.yml @@ -191,3 +191,14 @@ dingTalk: logging: level: com.epmet.dataaggre: debug + +thread: + # 线程池配置 + threadPool: + enableCustomize: @thread.threadPool.enable-customize@ + corePoolSize: @thread.threadPool.core-pool-size@ + maxPoolSize: @thread.threadPool.max-pool-size@ + queueCapacity: @thread.threadPool.queue-capacity@ + keepAliveSeconds: @thread.threadPool.keep-alive-seconds@ + threadNamePrefix: @thread.threadPool.thread-name-prefix@ + rejectedExecutionHandler: @thread.threadPool.rejected-execution-handler@ diff --git a/epmet-module/data-report/data-report-server/pom.xml b/epmet-module/data-report/data-report-server/pom.xml index 170d4f0d63..472525e5e7 100644 --- a/epmet-module/data-report/data-report-server/pom.xml +++ b/epmet-module/data-report/data-report-server/pom.xml @@ -192,6 +192,15 @@ https://oapi.dingtalk.com/robot/send?access_token=e894e5690f9d6a527722974c71548ff6c0fe29bd956589a09e21b16442a35ed4 SECfcc020bdc83bb17a2c00f39977b1fbc409ef4188c7beaea11c5caa90eeaf87fd + + + true + 5 + 8 + 20 + 60 + data-report + callerRunsPolicy @@ -246,6 +255,15 @@ https://oapi.dingtalk.com/robot/send?access_token=e894e5690f9d6a527722974c71548ff6c0fe29bd956589a09e21b16442a35ed4 SECfcc020bdc83bb17a2c00f39977b1fbc409ef4188c7beaea11c5caa90eeaf87fd + + + true + 5 + 8 + 20 + 60 + data-report + callerRunsPolicy @@ -300,6 +318,15 @@ https://oapi.dingtalk.com/robot/send?access_token=e894e5690f9d6a527722974c71548ff6c0fe29bd956589a09e21b16442a35ed4 SECfcc020bdc83bb17a2c00f39977b1fbc409ef4188c7beaea11c5caa90eeaf87fd + + + true + 5 + 8 + 20 + 60 + data-report + callerRunsPolicy @@ -354,6 +381,15 @@ https://oapi.dingtalk.com/robot/send?access_token=a5f66c3374b1642fe2142dbf56d5997e280172d4e8f2b546c9423a68c82ece6c SEC95f4f40b533ad379ea6a6d1af6dd37029383cfe1b7cd96dfac2678be2c1c3ed1 + + + true + 5 + 8 + 20 + 60 + data-report + callerRunsPolicy diff --git a/epmet-module/data-report/data-report-server/src/main/resources/bootstrap.yml b/epmet-module/data-report/data-report-server/src/main/resources/bootstrap.yml index 2ee366e369..8f7e9c61c4 100644 --- a/epmet-module/data-report/data-report-server/src/main/resources/bootstrap.yml +++ b/epmet-module/data-report/data-report-server/src/main/resources/bootstrap.yml @@ -158,3 +158,14 @@ shutdown: graceful: enable: true #是否开启优雅停机 waitTimeSecs: 30 # 优雅停机等待时间,超过30秒,发出告警 + +thread: + # 线程池配置 + threadPool: + enableCustomize: @thread.threadPool.enable-customize@ + corePoolSize: @thread.threadPool.core-pool-size@ + maxPoolSize: @thread.threadPool.max-pool-size@ + queueCapacity: @thread.threadPool.queue-capacity@ + keepAliveSeconds: @thread.threadPool.keep-alive-seconds@ + threadNamePrefix: @thread.threadPool.thread-name-prefix@ + rejectedExecutionHandler: @thread.threadPool.rejected-execution-handler@ diff --git a/epmet-module/data-statistical/data-statistical-server/pom.xml b/epmet-module/data-statistical/data-statistical-server/pom.xml index 8b145da840..d142521099 100644 --- a/epmet-module/data-statistical/data-statistical-server/pom.xml +++ b/epmet-module/data-statistical/data-statistical-server/pom.xml @@ -286,11 +286,14 @@ false - - 5 - 8 - 10 - 30 + + true + 5 + 8 + 20 + 60 + data-statistical + callerRunsPolicy https://oapi.dingtalk.com/robot/send?access_token=e894e5690f9d6a527722974c71548ff6c0fe29bd956589a09e21b16442a35ed4 @@ -415,11 +418,14 @@ false - - 5 - 8 - 10 - 30 + + true + 5 + 8 + 20 + 60 + data-statistical + callerRunsPolicy https://oapi.dingtalk.com/robot/send?access_token=e894e5690f9d6a527722974c71548ff6c0fe29bd956589a09e21b16442a35ed4 @@ -543,11 +549,15 @@ false - - 5 - 8 - 10 - 30 + + true + 5 + 8 + 20 + 60 + data-statistical + callerRunsPolicy + https://oapi.dingtalk.com/robot/send?access_token=e894e5690f9d6a527722974c71548ff6c0fe29bd956589a09e21b16442a35ed4 SECfcc020bdc83bb17a2c00f39977b1fbc409ef4188c7beaea11c5caa90eeaf87fd @@ -667,11 +677,14 @@ false - - 5 - 8 - 10 - 30 + + true + 5 + 8 + 20 + 60 + data-statistical + callerRunsPolicy https://oapi.dingtalk.com/robot/send?access_token=a5f66c3374b1642fe2142dbf56d5997e280172d4e8f2b546c9423a68c82ece6c diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/config/AsyncConfig.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/config/AsyncConfig.java deleted file mode 100644 index ba50e40a30..0000000000 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/config/AsyncConfig.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.epmet.config; - -import com.epmet.properties.ThreadProperties; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.scheduling.annotation.EnableAsync; -import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; - -import java.util.concurrent.Executor; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.ThreadPoolExecutor; - -/** - * 线程池配置类 - */ -@Configuration -@EnableConfigurationProperties(ThreadProperties.class) -@EnableAsync -public class AsyncConfig { - - @Autowired - private ThreadProperties threadProperties; - - @Bean - public Executor executor() { - ThreadProperties.ThreadPoolProperties threadPoolProps = threadProperties.getThreadPool(); - - ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); - executor.setCorePoolSize(threadPoolProps.getCorePoolSize()); - executor.setMaxPoolSize(threadPoolProps.getMaxPoolSize()); - executor.setQueueCapacity(threadPoolProps.getQueueCapacity()); - executor.setThreadNamePrefix("data-stats-"); - // rejection-policy:当pool已经达到max size的时候,如何处理新任务 - // CALLER_RUNS:不在新线程中执行任务,而是由调用者所在的线程来执行 - executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); //对拒绝task的处理策略 - executor.setKeepAliveSeconds(threadPoolProps.getKeepAlive()); - executor.initialize(); - return executor; - } - - @Bean - public ExecutorService executorService() { - ThreadPoolTaskExecutor executor = (ThreadPoolTaskExecutor) executor(); - return executor.getThreadPoolExecutor(); - } - -} diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/bootstrap.yml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/bootstrap.yml index c70278a240..8374e06c4f 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/bootstrap.yml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/bootstrap.yml @@ -197,10 +197,13 @@ dynamic: thread: # 线程池配置 threadPool: - corePoolSize: @thread.pool.core-pool-size@ - maxPoolSize: @thread.pool.max-pool-size@ - queueCapacity: @thread.pool.queue-capacity@ - keepAlive: @thread.pool.keep-alive@ + enableCustomize: @thread.threadPool.enable-customize@ + corePoolSize: @thread.threadPool.core-pool-size@ + maxPoolSize: @thread.threadPool.max-pool-size@ + queueCapacity: @thread.threadPool.queue-capacity@ + keepAliveSeconds: @thread.threadPool.keep-alive-seconds@ + threadNamePrefix: @thread.threadPool.thread-name-prefix@ + rejectedExecutionHandler: @thread.threadPool.rejected-execution-handler@ dingTalk: robot: diff --git a/epmet-module/epmet-activiti/epmet-activiti-server/pom.xml b/epmet-module/epmet-activiti/epmet-activiti-server/pom.xml index fa8fd80209..3788524034 100644 --- a/epmet-module/epmet-activiti/epmet-activiti-server/pom.xml +++ b/epmet-module/epmet-activiti/epmet-activiti-server/pom.xml @@ -185,6 +185,15 @@ true false + + + true + 5 + 8 + 20 + 60 + epmet-activiti + callerRunsPolicy @@ -219,6 +228,15 @@ false false + + + true + 5 + 8 + 20 + 60 + epmet-activiti + callerRunsPolicy @@ -250,6 +268,15 @@ true true + + + true + 5 + 8 + 20 + 60 + epmet-activiti + callerRunsPolicy @@ -281,6 +308,15 @@ true true + + + true + 5 + 8 + 20 + 60 + epmet-activiti + callerRunsPolicy diff --git a/epmet-module/epmet-activiti/epmet-activiti-server/src/main/resources/bootstrap.yml b/epmet-module/epmet-activiti/epmet-activiti-server/src/main/resources/bootstrap.yml index f31026085f..b39474ad3d 100644 --- a/epmet-module/epmet-activiti/epmet-activiti-server/src/main/resources/bootstrap.yml +++ b/epmet-module/epmet-activiti/epmet-activiti-server/src/main/resources/bootstrap.yml @@ -109,3 +109,14 @@ hystrix: ribbon: ReadTimeout: 300000 ConnectTimeout: 300000 + +thread: + # 线程池配置 + threadPool: + enableCustomize: @thread.threadPool.enable-customize@ + corePoolSize: @thread.threadPool.core-pool-size@ + maxPoolSize: @thread.threadPool.max-pool-size@ + queueCapacity: @thread.threadPool.queue-capacity@ + keepAliveSeconds: @thread.threadPool.keep-alive-seconds@ + threadNamePrefix: @thread.threadPool.thread-name-prefix@ + rejectedExecutionHandler: @thread.threadPool.rejected-execution-handler@ diff --git a/epmet-module/epmet-common-service/common-service-server/pom.xml b/epmet-module/epmet-common-service/common-service-server/pom.xml index 2e22c32c01..036a6c13bc 100644 --- a/epmet-module/epmet-common-service/common-service-server/pom.xml +++ b/epmet-module/epmet-common-service/common-service-server/pom.xml @@ -139,6 +139,15 @@ SECfcc020bdc83bb17a2c00f39977b1fbc409ef4188c7beaea11c5caa90eeaf87fd + + + true + 5 + 8 + 20 + 60 + common-service + callerRunsPolicy @@ -187,6 +196,15 @@ SECfcc020bdc83bb17a2c00f39977b1fbc409ef4188c7beaea11c5caa90eeaf87fd + + + true + 5 + 8 + 20 + 60 + common-service + callerRunsPolicy @@ -233,6 +251,15 @@ SECfcc020bdc83bb17a2c00f39977b1fbc409ef4188c7beaea11c5caa90eeaf87fd + + + true + 5 + 8 + 20 + 60 + common-service + callerRunsPolicy @@ -276,6 +303,15 @@ SECfcc020bdc83bb17a2c00f39977b1fbc409ef4188c7beaea11c5caa90eeaf87fd + + + true + 5 + 8 + 20 + 60 + common-service + callerRunsPolicy diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/resources/bootstrap.yml b/epmet-module/epmet-common-service/common-service-server/src/main/resources/bootstrap.yml index 3da9f56074..1900bf9009 100644 --- a/epmet-module/epmet-common-service/common-service-server/src/main/resources/bootstrap.yml +++ b/epmet-module/epmet-common-service/common-service-server/src/main/resources/bootstrap.yml @@ -140,3 +140,14 @@ shutdown: graceful: enable: true #是否开启优雅停机 waitTimeSecs: 30 # 优雅停机等待时间,超过30秒,发出告警 + +thread: + # 线程池配置 + threadPool: + enableCustomize: @thread.threadPool.enable-customize@ + corePoolSize: @thread.threadPool.core-pool-size@ + maxPoolSize: @thread.threadPool.max-pool-size@ + queueCapacity: @thread.threadPool.queue-capacity@ + keepAliveSeconds: @thread.threadPool.keep-alive-seconds@ + threadNamePrefix: @thread.threadPool.thread-name-prefix@ + rejectedExecutionHandler: @thread.threadPool.rejected-execution-handler@ diff --git a/epmet-module/epmet-ext/epmet-ext-server/pom.xml b/epmet-module/epmet-ext/epmet-ext-server/pom.xml index e0d4e979b0..c7c3165af0 100644 --- a/epmet-module/epmet-ext/epmet-ext-server/pom.xml +++ b/epmet-module/epmet-ext/epmet-ext-server/pom.xml @@ -226,6 +226,15 @@ SECfcc020bdc83bb17a2c00f39977b1fbc409ef4188c7beaea11c5caa90eeaf87fd + + + true + 5 + 8 + 20 + 60 + epmet-ext + callerRunsPolicy @@ -267,6 +276,15 @@ SECfcc020bdc83bb17a2c00f39977b1fbc409ef4188c7beaea11c5caa90eeaf87fd + + + true + 5 + 8 + 20 + 60 + epmet-ext + callerRunsPolicy @@ -308,6 +326,15 @@ SECfcc020bdc83bb17a2c00f39977b1fbc409ef4188c7beaea11c5caa90eeaf87fd + + + true + 5 + 8 + 20 + 60 + epmet-ext + callerRunsPolicy @@ -350,6 +377,15 @@ SEC95f4f40b533ad379ea6a6d1af6dd37029383cfe1b7cd96dfac2678be2c1c3ed1 + + + true + 5 + 8 + 20 + 60 + epmet-ext + callerRunsPolicy diff --git a/epmet-module/epmet-ext/epmet-ext-server/src/main/resources/bootstrap.yml b/epmet-module/epmet-ext/epmet-ext-server/src/main/resources/bootstrap.yml index bf9a797c20..d4e3824a5d 100644 --- a/epmet-module/epmet-ext/epmet-ext-server/src/main/resources/bootstrap.yml +++ b/epmet-module/epmet-ext/epmet-ext-server/src/main/resources/bootstrap.yml @@ -117,3 +117,14 @@ shutdown: openApi: accessToken: expire: 7200 + +thread: + # 线程池配置 + threadPool: + enableCustomize: @thread.threadPool.enable-customize@ + corePoolSize: @thread.threadPool.core-pool-size@ + maxPoolSize: @thread.threadPool.max-pool-size@ + queueCapacity: @thread.threadPool.queue-capacity@ + keepAliveSeconds: @thread.threadPool.keep-alive-seconds@ + threadNamePrefix: @thread.threadPool.thread-name-prefix@ + rejectedExecutionHandler: @thread.threadPool.rejected-execution-handler@ diff --git a/epmet-module/epmet-heart/epmet-heart-server/pom.xml b/epmet-module/epmet-heart/epmet-heart-server/pom.xml index ba92a6d321..de94b424d3 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/pom.xml +++ b/epmet-module/epmet-heart/epmet-heart-server/pom.xml @@ -162,6 +162,15 @@ true 192.168.1.140:9876;192.168.1.141:9876 + + + true + 5 + 8 + 20 + 60 + epmet-heart + callerRunsPolicy @@ -209,6 +218,15 @@ false 192.168.1.140:9876;192.168.1.141:9876 + + + true + 5 + 8 + 20 + 60 + epmet-heart + callerRunsPolicy @@ -256,6 +274,15 @@ true 192.168.10.161:9876 + + + true + 5 + 8 + 20 + 60 + epmet-heart + callerRunsPolicy @@ -303,6 +330,15 @@ true 192.168.11.187:9876;192.168.11.184:9876 + + + true + 5 + 8 + 20 + 60 + epmet-heart + callerRunsPolicy diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/bootstrap.yml b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/bootstrap.yml index aa43055c8e..31db2a802b 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/bootstrap.yml +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/bootstrap.yml @@ -150,3 +150,14 @@ shutdown: graceful: enable: true #是否开启优雅停机 waitTimeSecs: 30 # 优雅停机等待时间,超过30秒,发出告警 + +thread: + # 线程池配置 + threadPool: + enableCustomize: @thread.threadPool.enable-customize@ + corePoolSize: @thread.threadPool.core-pool-size@ + maxPoolSize: @thread.threadPool.max-pool-size@ + queueCapacity: @thread.threadPool.queue-capacity@ + keepAliveSeconds: @thread.threadPool.keep-alive-seconds@ + threadNamePrefix: @thread.threadPool.thread-name-prefix@ + rejectedExecutionHandler: @thread.threadPool.rejected-execution-handler@ diff --git a/epmet-module/epmet-message/epmet-message-server/pom.xml b/epmet-module/epmet-message/epmet-message-server/pom.xml index fe91db7f6b..2bef421caa 100644 --- a/epmet-module/epmet-message/epmet-message-server/pom.xml +++ b/epmet-module/epmet-message/epmet-message-server/pom.xml @@ -188,10 +188,13 @@ false - 5 - 8 - 10 - 30 + true + 5 + 8 + 20 + 60 + epmet-message + callerRunsPolicy @@ -238,11 +241,15 @@ false - - 5 - 8 - 10 - 30 + + true + 5 + 8 + 20 + 60 + epmet-message + callerRunsPolicy + https://oapi.dingtalk.com/robot/send?access_token=e894e5690f9d6a527722974c71548ff6c0fe29bd956589a09e21b16442a35ed4 @@ -288,11 +295,15 @@ true - - 5 - 8 - 10 - 30 + + true + 5 + 8 + 20 + 60 + epmet-message + callerRunsPolicy + https://oapi.dingtalk.com/robot/send?access_token=e894e5690f9d6a527722974c71548ff6c0fe29bd956589a09e21b16442a35ed4 @@ -336,11 +347,15 @@ true - - 5 - 8 - 10 - 30 + + true + 5 + 8 + 20 + 60 + epmet-message + callerRunsPolicy + https://oapi.dingtalk.com/robot/send?access_token=a5f66c3374b1642fe2142dbf56d5997e280172d4e8f2b546c9423a68c82ece6c diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/MessageApplication.java b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/MessageApplication.java index c32da6dd8a..9affe3659b 100644 --- a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/MessageApplication.java +++ b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/MessageApplication.java @@ -13,6 +13,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.ServletComponentScan; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.openfeign.EnableFeignClients; +import org.springframework.scheduling.annotation.EnableAsync; /** * 消息模块 @@ -24,6 +25,7 @@ import org.springframework.cloud.openfeign.EnableFeignClients; @EnableDiscoveryClient @EnableFeignClients @ServletComponentScan +@EnableAsync public class MessageApplication { public static void main(String[] args) { diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/config/AsyncConfig.java b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/config/AsyncConfig.java deleted file mode 100644 index 95c0b0c55a..0000000000 --- a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/config/AsyncConfig.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.epmet.config; - -import com.epmet.properties.ThreadProperties; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.scheduling.annotation.EnableAsync; -import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; - -import java.util.concurrent.Executor; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.ThreadPoolExecutor; - -/** - * 线程池配置类 - */ -@Configuration -@EnableConfigurationProperties(ThreadProperties.class) -@EnableAsync -public class AsyncConfig { - - @Autowired - private ThreadProperties threadProperties; - - @Bean - public Executor executor() { - ThreadProperties.ThreadPoolProperties threadPoolProps = threadProperties.getThreadPool(); - - ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); - executor.setCorePoolSize(threadPoolProps.getCorePoolSize()); - executor.setMaxPoolSize(threadPoolProps.getMaxPoolSize()); - executor.setQueueCapacity(threadPoolProps.getQueueCapacity()); - executor.setThreadNamePrefix("epmet-message-"); - // rejection-policy:当pool已经达到max size的时候,如何处理新任务 - // CALLER_RUNS:不在新线程中执行任务,而是由调用者所在的线程来执行 - executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); //对拒绝task的处理策略 - executor.setKeepAliveSeconds(threadPoolProps.getKeepAlive()); - executor.initialize(); - return executor; - } - - @Bean - public ExecutorService executorService() { - ThreadPoolTaskExecutor executor = (ThreadPoolTaskExecutor) executor(); - return executor.getThreadPoolExecutor(); - } - -} diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/resources/bootstrap.yml b/epmet-module/epmet-message/epmet-message-server/src/main/resources/bootstrap.yml index f4f88d87ca..84dd154e10 100644 --- a/epmet-module/epmet-message/epmet-message-server/src/main/resources/bootstrap.yml +++ b/epmet-module/epmet-message/epmet-message-server/src/main/resources/bootstrap.yml @@ -126,10 +126,13 @@ pagehelper: thread: # 线程池配置 threadPool: - corePoolSize: @thread.pool.core-pool-size@ - maxPoolSize: @thread.pool.max-pool-size@ - queueCapacity: @thread.pool.queue-capacity@ - keepAlive: @thread.pool.keep-alive@ + enableCustomize: @thread.threadPool.enable-customize@ + corePoolSize: @thread.threadPool.core-pool-size@ + maxPoolSize: @thread.threadPool.max-pool-size@ + queueCapacity: @thread.threadPool.queue-capacity@ + keepAliveSeconds: @thread.threadPool.keep-alive-seconds@ + threadNamePrefix: @thread.threadPool.thread-name-prefix@ + rejectedExecutionHandler: @thread.threadPool.rejected-execution-handler@ dingTalk: robot: @@ -146,3 +149,4 @@ rocketmq: name-server: @rocketmq.nameserver@ producer: group: @rocketmq.producer.group@ + diff --git a/epmet-module/epmet-oss/epmet-oss-server/pom.xml b/epmet-module/epmet-oss/epmet-oss-server/pom.xml index e27a7d8103..e1aa4893b4 100644 --- a/epmet-module/epmet-oss/epmet-oss-server/pom.xml +++ b/epmet-module/epmet-oss/epmet-oss-server/pom.xml @@ -146,6 +146,15 @@ false + + true + 5 + 8 + 20 + 60 + epmet-oss + callerRunsPolicy + https://oapi.dingtalk.com/robot/send?access_token=e894e5690f9d6a527722974c71548ff6c0fe29bd956589a09e21b16442a35ed4 @@ -185,6 +194,15 @@ false + + true + 5 + 8 + 20 + 60 + epmet-oss + callerRunsPolicy + false @@ -225,6 +243,15 @@ true + + true + 5 + 8 + 20 + 60 + epmet-oss + callerRunsPolicy + true @@ -262,6 +289,15 @@ true + + true + 5 + 8 + 20 + 60 + epmet-oss + callerRunsPolicy + true diff --git a/epmet-module/epmet-oss/epmet-oss-server/src/main/resources/bootstrap.yml b/epmet-module/epmet-oss/epmet-oss-server/src/main/resources/bootstrap.yml index 1b939a5edd..334e1e5629 100644 --- a/epmet-module/epmet-oss/epmet-oss-server/src/main/resources/bootstrap.yml +++ b/epmet-module/epmet-oss/epmet-oss-server/src/main/resources/bootstrap.yml @@ -143,3 +143,14 @@ shutdown: graceful: enable: true #是否开启优雅停机 waitTimeSecs: 30 # 优雅停机等待时间,超过30秒,发出告警 + +thread: + # 线程池配置 + threadPool: + enableCustomize: @thread.threadPool.enable-customize@ + corePoolSize: @thread.threadPool.core-pool-size@ + maxPoolSize: @thread.threadPool.max-pool-size@ + queueCapacity: @thread.threadPool.queue-capacity@ + keepAliveSeconds: @thread.threadPool.keep-alive-seconds@ + threadNamePrefix: @thread.threadPool.thread-name-prefix@ + rejectedExecutionHandler: @thread.threadPool.rejected-execution-handler@ diff --git a/epmet-module/epmet-point/epmet-point-server/pom.xml b/epmet-module/epmet-point/epmet-point-server/pom.xml index 8aea483cfd..2dcda97101 100644 --- a/epmet-module/epmet-point/epmet-point-server/pom.xml +++ b/epmet-module/epmet-point/epmet-point-server/pom.xml @@ -159,11 +159,15 @@ false - - 5 - 8 - 10 - 30 + + true + 5 + 8 + 20 + 60 + epmet-point + callerRunsPolicy + https://oapi.dingtalk.com/robot/send?access_token=e894e5690f9d6a527722974c71548ff6c0fe29bd956589a09e21b16442a35ed4 SECfcc020bdc83bb17a2c00f39977b1fbc409ef4188c7beaea11c5caa90eeaf87fd @@ -206,11 +210,15 @@ false - - 5 - 8 - 10 - 30 + + true + 5 + 8 + 20 + 60 + epmet-point + callerRunsPolicy + https://oapi.dingtalk.com/robot/send?access_token=e894e5690f9d6a527722974c71548ff6c0fe29bd956589a09e21b16442a35ed4 SECfcc020bdc83bb17a2c00f39977b1fbc409ef4188c7beaea11c5caa90eeaf87fd @@ -253,11 +261,15 @@ true - - 5 - 8 - 10 - 30 + + true + 5 + 8 + 20 + 60 + epmet-point + callerRunsPolicy + https://oapi.dingtalk.com/robot/send?access_token=e894e5690f9d6a527722974c71548ff6c0fe29bd956589a09e21b16442a35ed4 SECfcc020bdc83bb17a2c00f39977b1fbc409ef4188c7beaea11c5caa90eeaf87fd @@ -300,11 +312,15 @@ true - - 5 - 8 - 10 - 30 + + true + 5 + 8 + 20 + 60 + epmet-point + callerRunsPolicy + https://oapi.dingtalk.com/robot/send?access_token=a5f66c3374b1642fe2142dbf56d5997e280172d4e8f2b546c9423a68c82ece6c SEC95f4f40b533ad379ea6a6d1af6dd37029383cfe1b7cd96dfac2678be2c1c3ed1 diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/EpmetPointApplication.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/EpmetPointApplication.java index e2925628ba..79d5713a34 100644 --- a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/EpmetPointApplication.java +++ b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/EpmetPointApplication.java @@ -5,6 +5,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.ServletComponentScan; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.openfeign.EnableFeignClients; +import org.springframework.scheduling.annotation.EnableAsync; /** * 模块 @@ -16,6 +17,7 @@ import org.springframework.cloud.openfeign.EnableFeignClients; @EnableDiscoveryClient @EnableFeignClients @ServletComponentScan +@EnableAsync public class EpmetPointApplication { public static void main(String[] args) { SpringApplication.run(EpmetPointApplication.class, args); diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/config/AsyncConfig.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/config/AsyncConfig.java deleted file mode 100644 index 2573cbd4ab..0000000000 --- a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/config/AsyncConfig.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.epmet.config; - -import com.epmet.properties.ThreadProperties; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.scheduling.annotation.EnableAsync; -import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; - -import java.util.concurrent.Executor; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.ThreadPoolExecutor; - -/** - * 线程池配置类 - */ -@Configuration -@EnableConfigurationProperties(ThreadProperties.class) -@EnableAsync -public class AsyncConfig { - - @Autowired - private ThreadProperties threadProperties; - - @Bean - public Executor executor() { - ThreadProperties.ThreadPoolProperties threadPoolProps = threadProperties.getThreadPool(); - - ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); - executor.setCorePoolSize(threadPoolProps.getCorePoolSize()); - executor.setMaxPoolSize(threadPoolProps.getMaxPoolSize()); - executor.setQueueCapacity(threadPoolProps.getQueueCapacity()); - executor.setThreadNamePrefix("epmet-point-"); - // rejection-policy:当pool已经达到max size的时候,如何处理新任务 - // CALLER_RUNS:不在新线程中执行任务,而是由调用者所在的线程来执行 - executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); //对拒绝task的处理策略 - executor.setKeepAliveSeconds(threadPoolProps.getKeepAlive()); - executor.initialize(); - return executor; - } - - @Bean - public ExecutorService executorService() { - ThreadPoolTaskExecutor executor = (ThreadPoolTaskExecutor) executor(); - return executor.getThreadPoolExecutor(); - } - -} diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/resources/bootstrap.yml b/epmet-module/epmet-point/epmet-point-server/src/main/resources/bootstrap.yml index 4d5434a25f..b3fa3f8fe9 100644 --- a/epmet-module/epmet-point/epmet-point-server/src/main/resources/bootstrap.yml +++ b/epmet-module/epmet-point/epmet-point-server/src/main/resources/bootstrap.yml @@ -126,10 +126,13 @@ pagehelper: thread: # 线程池配置 threadPool: - corePoolSize: @thread.pool.core-pool-size@ - maxPoolSize: @thread.pool.max-pool-size@ - queueCapacity: @thread.pool.queue-capacity@ - keepAlive: @thread.pool.keep-alive@ + enableCustomize: @thread.threadPool.enable-customize@ + corePoolSize: @thread.threadPool.core-pool-size@ + maxPoolSize: @thread.threadPool.max-pool-size@ + queueCapacity: @thread.threadPool.queue-capacity@ + keepAliveSeconds: @thread.threadPool.keep-alive-seconds@ + threadNamePrefix: @thread.threadPool.thread-name-prefix@ + rejectedExecutionHandler: @thread.threadPool.rejected-execution-handler@ dingTalk: robot: diff --git a/epmet-module/epmet-third/epmet-third-server/pom.xml b/epmet-module/epmet-third/epmet-third-server/pom.xml index 0b24d1acb0..a319b011d2 100644 --- a/epmet-module/epmet-third/epmet-third-server/pom.xml +++ b/epmet-module/epmet-third/epmet-third-server/pom.xml @@ -212,6 +212,15 @@ true + + true + 5 + 8 + 20 + 60 + epmet-third + callerRunsPolicy + false @@ -263,6 +272,15 @@ false + + true + 5 + 8 + 20 + 60 + epmet-third + callerRunsPolicy + false @@ -313,6 +331,15 @@ true + + true + 5 + 8 + 20 + 60 + epmet-third + callerRunsPolicy + true @@ -364,6 +391,15 @@ true + + true + 5 + 8 + 20 + 60 + epmet-third + callerRunsPolicy + true diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/resources/bootstrap.yml b/epmet-module/epmet-third/epmet-third-server/src/main/resources/bootstrap.yml index 1ad3de55ca..67b1a2740e 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/resources/bootstrap.yml +++ b/epmet-module/epmet-third/epmet-third-server/src/main/resources/bootstrap.yml @@ -160,4 +160,15 @@ rocketmq: enable: @rocketmq.block-chain.enable@ name-server: @rocketmq.block-chain.name-server@ access-key: @rocketmq.block-chain.access-key@ - secret-key: @rocketmq.block-chain.secret-key@ \ No newline at end of file + secret-key: @rocketmq.block-chain.secret-key@ + +thread: + # 线程池配置 + threadPool: + enableCustomize: @thread.threadPool.enable-customize@ + corePoolSize: @thread.threadPool.core-pool-size@ + maxPoolSize: @thread.threadPool.max-pool-size@ + queueCapacity: @thread.threadPool.queue-capacity@ + keepAliveSeconds: @thread.threadPool.keep-alive-seconds@ + threadNamePrefix: @thread.threadPool.thread-name-prefix@ + rejectedExecutionHandler: @thread.threadPool.rejected-execution-handler@ \ No newline at end of file diff --git a/epmet-module/gov-access/gov-access-server/pom.xml b/epmet-module/gov-access/gov-access-server/pom.xml index 35f2a95c85..b99aea3799 100644 --- a/epmet-module/gov-access/gov-access-server/pom.xml +++ b/epmet-module/gov-access/gov-access-server/pom.xml @@ -127,6 +127,15 @@ true + + true + 5 + 8 + 20 + 60 + gov-access + callerRunsPolicy + false @@ -166,6 +175,15 @@ false + + true + 5 + 8 + 20 + 60 + gov-access + callerRunsPolicy + false @@ -205,6 +223,15 @@ true + + true + 5 + 8 + 20 + 60 + gov-access + callerRunsPolicy + true @@ -241,6 +268,15 @@ true + + true + 5 + 8 + 20 + 60 + gov-access + callerRunsPolicy + true diff --git a/epmet-module/gov-access/gov-access-server/src/main/resources/bootstrap.yml b/epmet-module/gov-access/gov-access-server/src/main/resources/bootstrap.yml index 0531e3885e..94f07d888b 100644 --- a/epmet-module/gov-access/gov-access-server/src/main/resources/bootstrap.yml +++ b/epmet-module/gov-access/gov-access-server/src/main/resources/bootstrap.yml @@ -130,4 +130,15 @@ logging: dingTalk: robot: webHook: @dingTalk.robot.webHook@ - secret: @dingTalk.robot.secret@ \ No newline at end of file + secret: @dingTalk.robot.secret@ + +thread: + # 线程池配置 + threadPool: + enableCustomize: @thread.threadPool.enable-customize@ + corePoolSize: @thread.threadPool.core-pool-size@ + maxPoolSize: @thread.threadPool.max-pool-size@ + queueCapacity: @thread.threadPool.queue-capacity@ + keepAliveSeconds: @thread.threadPool.keep-alive-seconds@ + threadNamePrefix: @thread.threadPool.thread-name-prefix@ + rejectedExecutionHandler: @thread.threadPool.rejected-execution-handler@ \ No newline at end of file diff --git a/epmet-module/gov-grid/gov-grid-server/pom.xml b/epmet-module/gov-grid/gov-grid-server/pom.xml index 3e4eac304b..5a7686b00c 100644 --- a/epmet-module/gov-grid/gov-grid-server/pom.xml +++ b/epmet-module/gov-grid/gov-grid-server/pom.xml @@ -119,6 +119,15 @@ true + + true + 5 + 8 + 20 + 60 + gov-grid + callerRunsPolicy + false @@ -153,6 +162,15 @@ false + + true + 5 + 8 + 20 + 60 + gov-grid + callerRunsPolicy + false @@ -187,6 +205,15 @@ true + + true + 5 + 8 + 20 + 60 + gov-grid + callerRunsPolicy + true @@ -221,6 +248,15 @@ true + + true + 5 + 8 + 20 + 60 + gov-grid + callerRunsPolicy + true diff --git a/epmet-module/gov-grid/gov-grid-server/src/main/resources/bootstrap.yml b/epmet-module/gov-grid/gov-grid-server/src/main/resources/bootstrap.yml index d9f0085bd7..f9d8a3caa6 100644 --- a/epmet-module/gov-grid/gov-grid-server/src/main/resources/bootstrap.yml +++ b/epmet-module/gov-grid/gov-grid-server/src/main/resources/bootstrap.yml @@ -89,3 +89,14 @@ shutdown: graceful: enable: true #是否开启优雅停机 waitTimeSecs: 30 # 优雅停机等待时间,超过30秒,发出告警 + +thread: + # 线程池配置 + threadPool: + enableCustomize: @thread.threadPool.enable-customize@ + corePoolSize: @thread.threadPool.core-pool-size@ + maxPoolSize: @thread.threadPool.max-pool-size@ + queueCapacity: @thread.threadPool.queue-capacity@ + keepAliveSeconds: @thread.threadPool.keep-alive-seconds@ + threadNamePrefix: @thread.threadPool.thread-name-prefix@ + rejectedExecutionHandler: @thread.threadPool.rejected-execution-handler@ diff --git a/epmet-module/gov-issue/gov-issue-server/pom.xml b/epmet-module/gov-issue/gov-issue-server/pom.xml index c09284177c..0132b21cca 100644 --- a/epmet-module/gov-issue/gov-issue-server/pom.xml +++ b/epmet-module/gov-issue/gov-issue-server/pom.xml @@ -169,6 +169,15 @@ true + + true + 5 + 8 + 20 + 60 + gov-issue + callerRunsPolicy + false https://epmet-dev.elinkservice.cn/api/epmetscan/api @@ -212,6 +221,15 @@ false + + true + 5 + 8 + 20 + 60 + gov-issue + callerRunsPolicy + false https://epmet-dev.elinkservice.cn/api/epmetscan/api @@ -255,6 +273,15 @@ true + + true + 5 + 8 + 20 + 60 + gov-issue + callerRunsPolicy + true https://epmet-dev.elinkservice.cn/api/epmetscan/api @@ -294,6 +321,15 @@ true + + true + 5 + 8 + 20 + 60 + gov-issue + callerRunsPolicy + true https://epmet-open.elinkservice.cn/api/epmetscan/api diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/resources/bootstrap.yml b/epmet-module/gov-issue/gov-issue-server/src/main/resources/bootstrap.yml index 93a00cd354..af7dee2c58 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/resources/bootstrap.yml +++ b/epmet-module/gov-issue/gov-issue-server/src/main/resources/bootstrap.yml @@ -142,3 +142,14 @@ shutdown: rocketmq: enable: @rocketmq.enable@ name-server: @rocketmq.nameserver@ + +thread: + # 线程池配置 + threadPool: + enableCustomize: @thread.threadPool.enable-customize@ + corePoolSize: @thread.threadPool.core-pool-size@ + maxPoolSize: @thread.threadPool.max-pool-size@ + queueCapacity: @thread.threadPool.queue-capacity@ + keepAliveSeconds: @thread.threadPool.keep-alive-seconds@ + threadNamePrefix: @thread.threadPool.thread-name-prefix@ + rejectedExecutionHandler: @thread.threadPool.rejected-execution-handler@ diff --git a/epmet-module/gov-mine/gov-mine-server/pom.xml b/epmet-module/gov-mine/gov-mine-server/pom.xml index c643659b07..22c67633ee 100644 --- a/epmet-module/gov-mine/gov-mine-server/pom.xml +++ b/epmet-module/gov-mine/gov-mine-server/pom.xml @@ -139,6 +139,15 @@ true + + true + 5 + 8 + 20 + 60 + gov-mine + callerRunsPolicy + https://oapi.dingtalk.com/robot/send?access_token=e894e5690f9d6a527722974c71548ff6c0fe29bd956589a09e21b16442a35ed4 @@ -172,6 +181,15 @@ false + + true + 5 + 8 + 20 + 60 + gov-mine + callerRunsPolicy + https://oapi.dingtalk.com/robot/send?access_token=e894e5690f9d6a527722974c71548ff6c0fe29bd956589a09e21b16442a35ed4 @@ -205,6 +223,15 @@ true + + true + 5 + 8 + 20 + 60 + gov-mine + callerRunsPolicy + https://oapi.dingtalk.com/robot/send?access_token=e894e5690f9d6a527722974c71548ff6c0fe29bd956589a09e21b16442a35ed4 @@ -235,6 +262,15 @@ true + + true + 5 + 8 + 20 + 60 + gov-mine + callerRunsPolicy + https://oapi.dingtalk.com/robot/send?access_token=a5f66c3374b1642fe2142dbf56d5997e280172d4e8f2b546c9423a68c82ece6c diff --git a/epmet-module/gov-mine/gov-mine-server/src/main/resources/bootstrap.yml b/epmet-module/gov-mine/gov-mine-server/src/main/resources/bootstrap.yml index 97052173b9..88eabe8772 100644 --- a/epmet-module/gov-mine/gov-mine-server/src/main/resources/bootstrap.yml +++ b/epmet-module/gov-mine/gov-mine-server/src/main/resources/bootstrap.yml @@ -108,3 +108,14 @@ shutdown: graceful: enable: true #是否开启优雅停机 waitTimeSecs: 30 # 优雅停机等待时间,超过30秒,发出告警 + +thread: + # 线程池配置 + threadPool: + enableCustomize: @thread.threadPool.enable-customize@ + corePoolSize: @thread.threadPool.core-pool-size@ + maxPoolSize: @thread.threadPool.max-pool-size@ + queueCapacity: @thread.threadPool.queue-capacity@ + keepAliveSeconds: @thread.threadPool.keep-alive-seconds@ + threadNamePrefix: @thread.threadPool.thread-name-prefix@ + rejectedExecutionHandler: @thread.threadPool.rejected-execution-handler@ diff --git a/epmet-module/gov-org/gov-org-server/pom.xml b/epmet-module/gov-org/gov-org-server/pom.xml index 094292fe13..5fcba99cf3 100644 --- a/epmet-module/gov-org/gov-org-server/pom.xml +++ b/epmet-module/gov-org/gov-org-server/pom.xml @@ -198,6 +198,15 @@ true + + true + 5 + 8 + 20 + 60 + gov-org + callerRunsPolicy + false @@ -243,6 +252,15 @@ false + + true + 5 + 8 + 20 + 60 + gov-org + callerRunsPolicy + false @@ -288,6 +306,14 @@ true + + true + 5 + 8 + 20 + 60 + gov-org + callerRunsPolicy true @@ -331,6 +357,15 @@ true + + true + 5 + 8 + 20 + 60 + gov-org + callerRunsPolicy + true diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/bootstrap.yml b/epmet-module/gov-org/gov-org-server/src/main/resources/bootstrap.yml index ddd78b7407..8039b75e00 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/resources/bootstrap.yml +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/bootstrap.yml @@ -154,3 +154,14 @@ rocketmq: name-server: @rocketmq.nameserver@ # consume-thread-min: 2 # consume-thread-max: 2 + +thread: + # 线程池配置 + threadPool: + enableCustomize: @thread.threadPool.enable-customize@ + corePoolSize: @thread.threadPool.core-pool-size@ + maxPoolSize: @thread.threadPool.max-pool-size@ + queueCapacity: @thread.threadPool.queue-capacity@ + keepAliveSeconds: @thread.threadPool.keep-alive-seconds@ + threadNamePrefix: @thread.threadPool.thread-name-prefix@ + rejectedExecutionHandler: @thread.threadPool.rejected-execution-handler@ diff --git a/epmet-module/gov-project/gov-project-server/pom.xml b/epmet-module/gov-project/gov-project-server/pom.xml index 69e7500932..88e598b596 100644 --- a/epmet-module/gov-project/gov-project-server/pom.xml +++ b/epmet-module/gov-project/gov-project-server/pom.xml @@ -187,6 +187,15 @@ true + + true + 5 + 8 + 20 + 60 + gov-project + callerRunsPolicy + false https://epmet-dev.elinkservice.cn/api/epmetscan/api @@ -229,6 +238,15 @@ false + + true + 5 + 8 + 20 + 60 + gov-project + callerRunsPolicy + false https://epmet-dev.elinkservice.cn/api/epmetscan/api @@ -270,6 +288,15 @@ true + + true + 5 + 8 + 20 + 60 + gov-project + callerRunsPolicy + true https://epmet-dev.elinkservice.cn/api/epmetscan/api @@ -308,6 +335,15 @@ true + + true + 5 + 8 + 20 + 60 + gov-project + callerRunsPolicy + true https://epmet-open.elinkservice.cn/api/epmetscan/api diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/bootstrap.yml b/epmet-module/gov-project/gov-project-server/src/main/resources/bootstrap.yml index 7821e73e53..15aa1dcbfb 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/resources/bootstrap.yml +++ b/epmet-module/gov-project/gov-project-server/src/main/resources/bootstrap.yml @@ -141,3 +141,14 @@ shutdown: graceful: enable: true #是否开启优雅停机 waitTimeSecs: 30 # 优雅停机等待时间,超过30秒,发出告警 + +thread: + # 线程池配置 + threadPool: + enableCustomize: @thread.threadPool.enable-customize@ + corePoolSize: @thread.threadPool.core-pool-size@ + maxPoolSize: @thread.threadPool.max-pool-size@ + queueCapacity: @thread.threadPool.queue-capacity@ + keepAliveSeconds: @thread.threadPool.keep-alive-seconds@ + threadNamePrefix: @thread.threadPool.thread-name-prefix@ + rejectedExecutionHandler: @thread.threadPool.rejected-execution-handler@ diff --git a/epmet-module/gov-voice/gov-voice-server/pom.xml b/epmet-module/gov-voice/gov-voice-server/pom.xml index 305075f3a6..acee6a8306 100644 --- a/epmet-module/gov-voice/gov-voice-server/pom.xml +++ b/epmet-module/gov-voice/gov-voice-server/pom.xml @@ -132,6 +132,15 @@ true + + true + 5 + 8 + 20 + 60 + gov-voice + callerRunsPolicy + false https://epmet-dev.elinkservice.cn/api/epmetscan/api @@ -173,6 +182,15 @@ false + + true + 5 + 8 + 20 + 60 + gov-voice + callerRunsPolicy + false https://epmet-dev.elinkservice.cn/api/epmetscan/api @@ -214,6 +232,15 @@ true + + true + 5 + 8 + 20 + 60 + gov-voice + callerRunsPolicy + true https://epmet-dev.elinkservice.cn/api/epmetscan/api @@ -252,6 +279,15 @@ true + + true + 5 + 8 + 20 + 60 + gov-voice + callerRunsPolicy + true https://epmet-open.elinkservice.cn/api/epmetscan/api diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/resources/bootstrap.yml b/epmet-module/gov-voice/gov-voice-server/src/main/resources/bootstrap.yml index 16425361b7..352c1d59e4 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/resources/bootstrap.yml +++ b/epmet-module/gov-voice/gov-voice-server/src/main/resources/bootstrap.yml @@ -129,3 +129,14 @@ shutdown: graceful: enable: true #是否开启优雅停机 waitTimeSecs: 30 # 优雅停机等待时间,超过30秒,发出告警 + +thread: + # 线程池配置 + threadPool: + enableCustomize: @thread.threadPool.enable-customize@ + corePoolSize: @thread.threadPool.core-pool-size@ + maxPoolSize: @thread.threadPool.max-pool-size@ + queueCapacity: @thread.threadPool.queue-capacity@ + keepAliveSeconds: @thread.threadPool.keep-alive-seconds@ + threadNamePrefix: @thread.threadPool.thread-name-prefix@ + rejectedExecutionHandler: @thread.threadPool.rejected-execution-handler@ diff --git a/epmet-module/open-data-worker/open-data-worker-server/pom.xml b/epmet-module/open-data-worker/open-data-worker-server/pom.xml index 802f37d762..f5e8264f49 100644 --- a/epmet-module/open-data-worker/open-data-worker-server/pom.xml +++ b/epmet-module/open-data-worker/open-data-worker-server/pom.xml @@ -140,6 +140,15 @@ true + + true + 5 + 8 + 20 + 60 + open-data-worker + callerRunsPolicy + false @@ -183,6 +192,15 @@ false + + true + 5 + 8 + 20 + 60 + open-data-worker + callerRunsPolicy + false @@ -226,6 +244,15 @@ true + + true + 5 + 8 + 20 + 60 + open-data-worker + callerRunsPolicy + true @@ -266,6 +293,15 @@ true + + true + 5 + 8 + 20 + 60 + open-data-worker + callerRunsPolicy + true diff --git a/epmet-module/open-data-worker/open-data-worker-server/src/main/resources/bootstrap.yml b/epmet-module/open-data-worker/open-data-worker-server/src/main/resources/bootstrap.yml index 49db95eb6d..a27e8fdf66 100644 --- a/epmet-module/open-data-worker/open-data-worker-server/src/main/resources/bootstrap.yml +++ b/epmet-module/open-data-worker/open-data-worker-server/src/main/resources/bootstrap.yml @@ -135,4 +135,15 @@ dingTalk: rocketmq: # 是否开启mq enable: @rocketmq.enable@ - name-server: @rocketmq.nameserver@ \ No newline at end of file + name-server: @rocketmq.nameserver@ + +thread: + # 线程池配置 + threadPool: + enableCustomize: @thread.threadPool.enable-customize@ + corePoolSize: @thread.threadPool.core-pool-size@ + maxPoolSize: @thread.threadPool.max-pool-size@ + queueCapacity: @thread.threadPool.queue-capacity@ + keepAliveSeconds: @thread.threadPool.keep-alive-seconds@ + threadNamePrefix: @thread.threadPool.thread-name-prefix@ + rejectedExecutionHandler: @thread.threadPool.rejected-execution-handler@ \ No newline at end of file diff --git a/epmet-module/oper-access/oper-access-server/pom.xml b/epmet-module/oper-access/oper-access-server/pom.xml index 8d3c8706e8..0089943bf7 100644 --- a/epmet-module/oper-access/oper-access-server/pom.xml +++ b/epmet-module/oper-access/oper-access-server/pom.xml @@ -120,6 +120,15 @@ true + + true + 5 + 8 + 20 + 60 + oper-access + callerRunsPolicy + false @@ -160,6 +169,15 @@ false + + true + 5 + 8 + 20 + 60 + oper-access + callerRunsPolicy + false @@ -200,6 +218,15 @@ true + + true + 5 + 8 + 20 + 60 + oper-access + callerRunsPolicy + true @@ -237,6 +264,15 @@ true + + true + 5 + 8 + 20 + 60 + oper-access + callerRunsPolicy + true diff --git a/epmet-module/oper-access/oper-access-server/src/main/resources/bootstrap.yml b/epmet-module/oper-access/oper-access-server/src/main/resources/bootstrap.yml index ba387b80c4..9ed804a4a3 100644 --- a/epmet-module/oper-access/oper-access-server/src/main/resources/bootstrap.yml +++ b/epmet-module/oper-access/oper-access-server/src/main/resources/bootstrap.yml @@ -132,3 +132,14 @@ shutdown: graceful: enable: true #是否开启优雅停机 waitTimeSecs: 30 # 优雅停机等待时间,超过30秒,发出告警 + +thread: + # 线程池配置 + threadPool: + enableCustomize: @thread.threadPool.enable-customize@ + corePoolSize: @thread.threadPool.core-pool-size@ + maxPoolSize: @thread.threadPool.max-pool-size@ + queueCapacity: @thread.threadPool.queue-capacity@ + keepAliveSeconds: @thread.threadPool.keep-alive-seconds@ + threadNamePrefix: @thread.threadPool.thread-name-prefix@ + rejectedExecutionHandler: @thread.threadPool.rejected-execution-handler@ \ No newline at end of file diff --git a/epmet-module/oper-crm/oper-crm-server/pom.xml b/epmet-module/oper-crm/oper-crm-server/pom.xml index f972dcffbf..f91fbdafc0 100644 --- a/epmet-module/oper-crm/oper-crm-server/pom.xml +++ b/epmet-module/oper-crm/oper-crm-server/pom.xml @@ -165,6 +165,15 @@ true + + true + 5 + 8 + 20 + 60 + oper-crm + callerRunsPolicy + false @@ -205,6 +214,15 @@ false + + true + 5 + 8 + 20 + 60 + oper-crm + callerRunsPolicy + false @@ -245,6 +263,15 @@ true + + true + 5 + 8 + 20 + 60 + oper-crm + callerRunsPolicy + true @@ -285,6 +312,15 @@ true + + true + 5 + 8 + 20 + 60 + oper-crm + callerRunsPolicy + true diff --git a/epmet-module/oper-crm/oper-crm-server/src/main/resources/bootstrap.yml b/epmet-module/oper-crm/oper-crm-server/src/main/resources/bootstrap.yml index dc81eba455..15bb6eb0be 100644 --- a/epmet-module/oper-crm/oper-crm-server/src/main/resources/bootstrap.yml +++ b/epmet-module/oper-crm/oper-crm-server/src/main/resources/bootstrap.yml @@ -138,3 +138,14 @@ shutdown: graceful: enable: true #是否开启优雅停机 waitTimeSecs: 30 # 优雅停机等待时间,超过30秒,发出告警 + +thread: + # 线程池配置 + threadPool: + enableCustomize: @thread.threadPool.enable-customize@ + corePoolSize: @thread.threadPool.core-pool-size@ + maxPoolSize: @thread.threadPool.max-pool-size@ + queueCapacity: @thread.threadPool.queue-capacity@ + keepAliveSeconds: @thread.threadPool.keep-alive-seconds@ + threadNamePrefix: @thread.threadPool.thread-name-prefix@ + rejectedExecutionHandler: @thread.threadPool.rejected-execution-handler@ \ No newline at end of file diff --git a/epmet-module/oper-customize/oper-customize-server/pom.xml b/epmet-module/oper-customize/oper-customize-server/pom.xml index d1e566e165..8ab9300ff5 100644 --- a/epmet-module/oper-customize/oper-customize-server/pom.xml +++ b/epmet-module/oper-customize/oper-customize-server/pom.xml @@ -137,6 +137,15 @@ true + + true + 5 + 8 + 20 + 60 + oper-customize + callerRunsPolicy + false @@ -182,6 +191,15 @@ false + + true + 5 + 8 + 20 + 60 + oper-customize + callerRunsPolicy + false @@ -227,6 +245,15 @@ true + + true + 5 + 8 + 20 + 60 + oper-customize + callerRunsPolicy + true @@ -269,6 +296,15 @@ true + + true + 5 + 8 + 20 + 60 + oper-customize + callerRunsPolicy + true diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/resources/bootstrap.yml b/epmet-module/oper-customize/oper-customize-server/src/main/resources/bootstrap.yml index c5dec6d251..346506fb54 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/resources/bootstrap.yml +++ b/epmet-module/oper-customize/oper-customize-server/src/main/resources/bootstrap.yml @@ -136,3 +136,14 @@ shutdown: graceful: enable: true #是否开启优雅停机 waitTimeSecs: 30 # 优雅停机等待时间,超过30秒,发出告警 + +thread: + # 线程池配置 + threadPool: + enableCustomize: @thread.threadPool.enable-customize@ + corePoolSize: @thread.threadPool.core-pool-size@ + maxPoolSize: @thread.threadPool.max-pool-size@ + queueCapacity: @thread.threadPool.queue-capacity@ + keepAliveSeconds: @thread.threadPool.keep-alive-seconds@ + threadNamePrefix: @thread.threadPool.thread-name-prefix@ + rejectedExecutionHandler: @thread.threadPool.rejected-execution-handler@ \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/pom.xml b/epmet-module/resi-group/resi-group-server/pom.xml index 1a1462c00b..bd232b3aac 100644 --- a/epmet-module/resi-group/resi-group-server/pom.xml +++ b/epmet-module/resi-group/resi-group-server/pom.xml @@ -193,11 +193,14 @@ 52d9d9b0e7d0eb5b8b81c205b579e07c https://epmet-dev.elinkservice.cn/api/epmetscan/api - - 5 - 8 - 10 - 30 + + true + 5 + 8 + 20 + 60 + resi-group + callerRunsPolicy @@ -252,11 +255,14 @@ 52d9d9b0e7d0eb5b8b81c205b579e07c https://epmet-dev.elinkservice.cn/api/epmetscan/api - - 5 - 8 - 10 - 30 + + true + 5 + 8 + 20 + 60 + resi-group + callerRunsPolicy @@ -309,11 +315,14 @@ 96d788191a10ff57a125157183413004 https://epmet-dev.elinkservice.cn/api/epmetscan/api - - 5 - 8 - 10 - 30 + + true + 5 + 8 + 20 + 60 + resi-group + callerRunsPolicy @@ -365,11 +374,14 @@ 7ce17f65826539ff3e8616dccd4b70fc https://epmet-open.elinkservice.cn/api/epmetscan/api - - 5 - 8 - 10 - 30 + + true + 5 + 8 + 20 + 60 + resi-group + callerRunsPolicy diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/ResiGroupApplication.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/ResiGroupApplication.java index 0976927df0..eafe96e728 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/ResiGroupApplication.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/ResiGroupApplication.java @@ -13,6 +13,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.ServletComponentScan; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.openfeign.EnableFeignClients; +import org.springframework.scheduling.annotation.EnableAsync; /** * 模块 @@ -24,6 +25,7 @@ import org.springframework.cloud.openfeign.EnableFeignClients; @EnableDiscoveryClient @EnableFeignClients @ServletComponentScan +@EnableAsync public class ResiGroupApplication { public static void main(String[] args) { diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/config/AsyncConfig.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/config/AsyncConfig.java deleted file mode 100644 index 8a1a958939..0000000000 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/config/AsyncConfig.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.epmet.config; - -import com.epmet.properties.ThreadProperties; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.scheduling.annotation.EnableAsync; -import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; - -import java.util.concurrent.Executor; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.ThreadPoolExecutor; - -/** - * 线程池配置类 - */ -@Configuration -@EnableConfigurationProperties(ThreadProperties.class) -@EnableAsync -public class AsyncConfig { - - @Autowired - private ThreadProperties threadProperties; - - @Bean - public Executor executor() { - ThreadProperties.ThreadPoolProperties threadPoolProps = threadProperties.getThreadPool(); - - ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); - executor.setCorePoolSize(threadPoolProps.getCorePoolSize()); - executor.setMaxPoolSize(threadPoolProps.getMaxPoolSize()); - executor.setQueueCapacity(threadPoolProps.getQueueCapacity()); - executor.setThreadNamePrefix("epmet-resi-group-"); - // rejection-policy:当pool已经达到max size的时候,如何处理新任务 - // CALLER_RUNS:不在新线程中执行任务,而是由调用者所在的线程来执行 - executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); //对拒绝task的处理策略 - executor.setKeepAliveSeconds(threadPoolProps.getKeepAlive()); - executor.initialize(); - return executor; - } - - @Bean - public ExecutorService executorService() { - ThreadPoolTaskExecutor executor = (ThreadPoolTaskExecutor) executor(); - return executor.getThreadPoolExecutor(); - } - -} diff --git a/epmet-module/resi-group/resi-group-server/src/main/resources/bootstrap.yml b/epmet-module/resi-group/resi-group-server/src/main/resources/bootstrap.yml index 3e553a5364..e9a8edafd3 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/resources/bootstrap.yml +++ b/epmet-module/resi-group/resi-group-server/src/main/resources/bootstrap.yml @@ -144,10 +144,13 @@ openapi: thread: # 线程池配置 threadPool: - corePoolSize: @thread.pool.core-pool-size@ - maxPoolSize: @thread.pool.max-pool-size@ - queueCapacity: @thread.pool.queue-capacity@ - keepAlive: @thread.pool.keep-alive@ + enableCustomize: @thread.threadPool.enable-customize@ + corePoolSize: @thread.threadPool.core-pool-size@ + maxPoolSize: @thread.threadPool.max-pool-size@ + queueCapacity: @thread.threadPool.queue-capacity@ + keepAliveSeconds: @thread.threadPool.keep-alive-seconds@ + threadNamePrefix: @thread.threadPool.thread-name-prefix@ + rejectedExecutionHandler: @thread.threadPool.rejected-execution-handler@ dingTalk: diff --git a/epmet-openapi/epmet-openapi-scan/pom.xml b/epmet-openapi/epmet-openapi-scan/pom.xml index 289dd8a2f9..df86510504 100644 --- a/epmet-openapi/epmet-openapi-scan/pom.xml +++ b/epmet-openapi/epmet-openapi-scan/pom.xml @@ -107,6 +107,15 @@ true + + true + 5 + 8 + 20 + 60 + epmet-openapi-scan + callerRunsPolicy + https://oapi.dingtalk.com/robot/send?access_token=e894e5690f9d6a527722974c71548ff6c0fe29bd956589a09e21b16442a35ed4 @@ -142,6 +151,15 @@ false + + true + 5 + 8 + 20 + 60 + epmet-openapi-scan + callerRunsPolicy + https://oapi.dingtalk.com/robot/send?access_token=e894e5690f9d6a527722974c71548ff6c0fe29bd956589a09e21b16442a35ed4 @@ -172,6 +190,15 @@ true + + true + 5 + 8 + 20 + 60 + epmet-openapi-scan + callerRunsPolicy + https://oapi.dingtalk.com/robot/send?access_token=e894e5690f9d6a527722974c71548ff6c0fe29bd956589a09e21b16442a35ed4 @@ -207,6 +234,14 @@ true + + true + 5 + 8 + 20 + 60 + epmet-openapi-scan + callerRunsPolicy diff --git a/epmet-openapi/epmet-openapi-scan/src/main/resources/bootstrap.yml b/epmet-openapi/epmet-openapi-scan/src/main/resources/bootstrap.yml index 07a611bc39..108c714da6 100644 --- a/epmet-openapi/epmet-openapi-scan/src/main/resources/bootstrap.yml +++ b/epmet-openapi/epmet-openapi-scan/src/main/resources/bootstrap.yml @@ -91,3 +91,14 @@ shutdown: enable: true #是否开启优雅停机 waitTimeSecs: 30 # 优雅停机等待时间,超过30秒,发出告警 +thread: + # 线程池配置 + threadPool: + enableCustomize: @thread.threadPool.enable-customize@ + corePoolSize: @thread.threadPool.core-pool-size@ + maxPoolSize: @thread.threadPool.max-pool-size@ + queueCapacity: @thread.threadPool.queue-capacity@ + keepAliveSeconds: @thread.threadPool.keep-alive-seconds@ + threadNamePrefix: @thread.threadPool.thread-name-prefix@ + rejectedExecutionHandler: @thread.threadPool.rejected-execution-handler@ + diff --git a/epmet-user/epmet-user-server/pom.xml b/epmet-user/epmet-user-server/pom.xml index 8d021ca7a8..d33a909620 100644 --- a/epmet-user/epmet-user-server/pom.xml +++ b/epmet-user/epmet-user-server/pom.xml @@ -231,6 +231,15 @@ true 192.168.1.140:9876;192.168.1.141:9876 + + + true + 5 + 8 + 10 + 60 + epmet-user + callerRunsPolicy @@ -276,6 +285,15 @@ false 192.168.1.140:9876;192.168.1.141:9876 + + + true + 5 + 8 + 10 + 60 + epmet-user + callerRunsPolicy @@ -320,6 +338,15 @@ true 192.168.10.161:9876 + + + true + 5 + 8 + 10 + 60 + epmet-user + callerRunsPolicy @@ -363,6 +390,15 @@ true 192.168.11.187:9876;192.168.11.184:9876 + + + true + 5 + 8 + 10 + 60 + epmet-user + callerRunsPolicy diff --git a/epmet-user/epmet-user-server/src/main/resources/bootstrap.yml b/epmet-user/epmet-user-server/src/main/resources/bootstrap.yml index cce9a52831..37b078e18f 100644 --- a/epmet-user/epmet-user-server/src/main/resources/bootstrap.yml +++ b/epmet-user/epmet-user-server/src/main/resources/bootstrap.yml @@ -165,3 +165,14 @@ shutdown: graceful: enable: true #是否开启优雅停机 waitTimeSecs: 30 # 优雅停机等待时间,超过30秒,发出告警 + +thread: + # 线程池配置 + threadPool: + enableCustomize: @thread.threadPool.enable-customize@ + corePoolSize: @thread.threadPool.core-pool-size@ + maxPoolSize: @thread.threadPool.max-pool-size@ + queueCapacity: @thread.threadPool.queue-capacity@ + keepAliveSeconds: @thread.threadPool.keep-alive-seconds@ + threadNamePrefix: @thread.threadPool.thread-name-prefix@ + rejectedExecutionHandler: @thread.threadPool.rejected-execution-handler@ \ No newline at end of file From 64787e6ef80844009551a6acb30b157b3ce3936b Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Wed, 2 Mar 2022 10:02:27 +0800 Subject: [PATCH 043/115] =?UTF-8?q?calCpcPartyAbilityV2=E8=AF=95=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/dto/extract/UserGroupIdDTO.java | 13 + .../com/epmet/controller/DemoController.java | 24 +- .../extract/FactOriginGroupMainDailyDao.java | 3 + .../dataToIndex/CalCpcIndexService.java | 5 +- .../impl/CalCpcIndexServiceImpl.java | 256 +++++++++++++++++- .../FactOriginGroupMainDailyService.java | 7 + .../FactOriginGroupMainDailyServiceImpl.java | 13 +- .../extract/FactOriginGroupMainDailyDao.xml | 18 ++ 8 files changed, 323 insertions(+), 16 deletions(-) create mode 100644 epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/extract/UserGroupIdDTO.java diff --git a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/extract/UserGroupIdDTO.java b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/extract/UserGroupIdDTO.java new file mode 100644 index 0000000000..854a000fde --- /dev/null +++ b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/extract/UserGroupIdDTO.java @@ -0,0 +1,13 @@ +package com.epmet.dto.extract; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + + +@Data +public class UserGroupIdDTO implements Serializable { + private String userId; + private List groupIdList; +} diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java index a0abb1b2e2..84cb0c6964 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java @@ -54,7 +54,6 @@ import com.epmet.service.stats.DimAgencyService; import com.epmet.service.stats.DimCustomerPartymemberService; import com.epmet.service.stats.DimCustomerService; import com.epmet.util.DimIdGenerator; -import com.google.common.util.concurrent.ThreadFactoryBuilder; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -65,7 +64,9 @@ import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.*; -import java.util.concurrent.*; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Future; @RequestMapping("demo") @RestController @@ -620,20 +621,23 @@ public class DemoController { private CalCpcIndexService calCpcIndexService; @PostMapping("calCpcPartyAbility") - public Result calCpcPartyAbility(@RequestParam("customerId") String customerId, @RequestParam("monthId")String monthId) { + public Result calCpcPartyAbility(@RequestParam("customerId") String customerId, @RequestParam("monthId") String monthId) { + long startCpc = System.currentTimeMillis(); if (StringUtils.isNotBlank(customerId) && StringUtils.isNotBlank(monthId)) { - calCpcIndexService.calCpcPartyAbility(customerId,monthId); - }else{ + calCpcIndexService.calCpcPartyAbilityV2(customerId, monthId); + // calCpcIndexService.calCpcPartyAbility(customerId, monthId); + } else { QueryWrapper customerEntityQueryWrapper = new QueryWrapper<>(); - List customerEntityList=dimCustomerDao.selectList(customerEntityQueryWrapper); + List customerEntityList = dimCustomerDao.selectList(customerEntityQueryWrapper); QueryWrapper wrapper = new QueryWrapper<>(); - List dimMonthEntityList= dimMonthDao.selectList(wrapper); - for(DimCustomerEntity customerEntity:customerEntityList){ - for(DimMonthEntity monthEntity:dimMonthEntityList) { - calCpcIndexService.calCpcPartyAbility(customerEntity.getId(),monthEntity.getId()); + List dimMonthEntityList = dimMonthDao.selectList(wrapper); + for (DimCustomerEntity customerEntity : customerEntityList) { + for (DimMonthEntity monthEntity : dimMonthEntityList) { + calCpcIndexService.calCpcPartyAbilityV2(customerEntity.getId(), monthEntity.getId()); } } } + log.error("手动调用党员相关-党建能力执行完毕======总耗时:{}ms,customerId:{}", System.currentTimeMillis() - startCpc, customerId); return new Result(); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginGroupMainDailyDao.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginGroupMainDailyDao.java index 1533d70143..c4f3f8f231 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginGroupMainDailyDao.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginGroupMainDailyDao.java @@ -19,6 +19,7 @@ package com.epmet.dao.evaluationindex.extract; import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.dto.extract.FactOriginGroupMainDailyDTO; +import com.epmet.dto.extract.UserGroupIdDTO; import com.epmet.dto.extract.form.GridHeartedFormDTO; import com.epmet.dto.extract.form.ScreenPartyLinkMassesDataFormDTO; import com.epmet.dto.extract.result.GridGroupUserCountResultDTO; @@ -225,4 +226,6 @@ public interface FactOriginGroupMainDailyDao extends BaseDao */ List selectPartyMemberGroupStaticByGrid(@Param("customerId") String customerId, @Param("dateId") String dateId); + + List selectGroupAndLeader(String customerId); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/CalCpcIndexService.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/CalCpcIndexService.java index cb9552dd4d..48cf376478 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/CalCpcIndexService.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/CalCpcIndexService.java @@ -1,7 +1,5 @@ package com.epmet.service.evaluationindex.extract.dataToIndex; -import java.util.Map; - /** * 党员相关 * @@ -18,4 +16,7 @@ public interface CalCpcIndexService { * @Date 2020/9/17 14:08 **/ void calCpcPartyAbility(String customerId, String monthId); + + + void calCpcPartyAbilityV2(String customerId, String monthId); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/CalCpcIndexServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/CalCpcIndexServiceImpl.java index b78ebc1588..817c412a3a 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/CalCpcIndexServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/CalCpcIndexServiceImpl.java @@ -1,7 +1,10 @@ package com.epmet.service.evaluationindex.extract.dataToIndex.impl; import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.exception.ExceptionUtils; +import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.DateUtils; +import com.epmet.dto.extract.UserGroupIdDTO; import com.epmet.dto.indexcollect.result.CpcIndexCommonDTO; import com.epmet.entity.evaluationindex.indexcoll.FactIndexPartyAblityCpcMonthlyEntity; import com.epmet.service.evaluationindex.extract.dataToIndex.CalCpcIndexService; @@ -9,8 +12,10 @@ import com.epmet.service.evaluationindex.extract.todata.*; import com.epmet.service.evaluationindex.indexcoll.FactIndexPartyAblityCpcMonthlyService; import com.epmet.service.group.GroupDataService; import com.epmet.service.stats.DimCustomerPartymemberService; +import com.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.MapUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -20,6 +25,8 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.CompletableFuture; +import java.util.stream.Collectors; /** * 党员相关 @@ -78,6 +85,7 @@ public class CalCpcIndexServiceImpl implements CalCpcIndexService { Map joinThreeMeetsCountMap=calJoinThreeMeetsCount(customerId,monthId); //可以先查询出每个党员的 自建群 + //todo Map> userCreatedGroups = queryUserCreatedGroups(customerId, indexPartyAblityCpcList); //6、党员自建群群众人数 :和评价周期无关 Map groupUserCountMap = calgroupUserCount(customerId, monthId, indexPartyAblityCpcList, userCreatedGroups); @@ -134,6 +142,237 @@ public class CalCpcIndexServiceImpl implements CalCpcIndexService { factIndexPartyAblityCpcMonthlyService.delAndSavePartyAblityCpcMonthly(customerId,monthId,indexPartyAblityCpcList); } + @Override + public void calCpcPartyAbilityV2(String customerId, String monthId) { + //1、构造初始值 当前客户下所有的党员 + List indexPartyAblityCpcList = dimCustomerPartymemberService.selectPartyMemberList(customerId); + if (CollectionUtils.isEmpty(indexPartyAblityCpcList)) { + log.info("dim_customer_partymember do not any records customerId=" + customerId); + return; + } + + //可以先查询出每个党员的 自建群 + Map> userCreatedGroups = queryUserCreatedGroups(customerId, indexPartyAblityCpcList); + + CompletableFuture> createTopicCountFuture = CompletableFuture.supplyAsync(() -> { + return calCreateTopicCount(customerId, monthId); + }); + + CompletableFuture> joinTopicCountFuture = CompletableFuture.supplyAsync(() -> { + return calJoinTopicCount(customerId, monthId); + }); + + CompletableFuture> shiftIssueCountFuture = CompletableFuture.supplyAsync(() -> { + return calShiftIssueCount(customerId, monthId); + }); + + CompletableFuture> shiftProjectCountFuture = CompletableFuture.supplyAsync(() -> { + return calShiftProjectCount(customerId, monthId); + }); + + CompletableFuture> joinThreeMeetsCountFuture = CompletableFuture.supplyAsync(() -> { + return calJoinThreeMeetsCount(customerId, monthId); + }); + + + CompletableFuture> groupUserCountFuture = CompletableFuture.supplyAsync(() -> { + return calgroupUserCount(customerId, monthId, indexPartyAblityCpcList, userCreatedGroups); + }); + + + CompletableFuture> groupActiveUserCountFuture = CompletableFuture.supplyAsync(() -> { + return calGroupActiveUserCount(customerId, monthId, indexPartyAblityCpcList, userCreatedGroups); + }); + + + CompletableFuture> groupTopicCountFuture = CompletableFuture.supplyAsync(() -> { + return calGroupTopicCount(customerId, monthId); + }); + + + CompletableFuture> topicToIssueRatioFuture = CompletableFuture.supplyAsync(() -> { + return caltopicToIssueRatio(customerId, monthId, indexPartyAblityCpcList, userCreatedGroups); + }); + + Map createTopicCountMap = new HashMap<>(); + Map joinTopicCountMap = new HashMap<>(); + Map shiftIssueCountMap = new HashMap<>(); + Map shiftProjectCountMap = new HashMap<>(); + Map joinThreeMeetsCountMap = new HashMap<>(); + Map groupUserCountMap = new HashMap<>(); + Map groupActiveUserCountMap = new HashMap<>(); + Map groupTopicCountMap = new HashMap<>(); + Map topicToIssueRatioMap = new HashMap<>(); + try { + //1、党员提出话题数 + createTopicCountMap = createTopicCountFuture.get(); + } catch (Exception e) { + log.error("党员相关-党建能力原始指标值【党员提出话题数】计算异常:{}", ExceptionUtils.getErrorStackTrace(e)); + } + + try{ + //2、党员参与话题数(支持、反对、评论、浏览)---目前只统计 党员评论话题次数之和 + joinTopicCountMap = joinTopicCountFuture.get(); + } catch (Exception e) { + log.error("党员相关-党建能力原始指标值【党员参与话题数】计算异常:{}", ExceptionUtils.getErrorStackTrace(e)); + } + try{ + //3、党员提出的话题转议题数 + shiftIssueCountMap = shiftIssueCountFuture.get(); + + } catch (Exception e) { + log.error("党员相关-党建能力原始指标值【党员提出的话题转议题数】计算异常:{}", ExceptionUtils.getErrorStackTrace(e)); + } + try{ + //4、党员提出的议题转项目数 + shiftProjectCountMap = shiftProjectCountFuture.get(); + } catch (Exception e) { + log.error("党员相关-党建能力原始指标值【党员提出的议题转项目数】计算异常:{}", ExceptionUtils.getErrorStackTrace(e)); + } + try{ + //5、参加“三会一课”次数 默认0 :当前用户在本月内活动签到次数 限制活动分类编码100001 三会一课 + joinThreeMeetsCountMap = joinThreeMeetsCountFuture.get(); + } catch (Exception e) { + log.error("党员相关-党建能力原始指标值【参加“三会一课”次数】计算异常:{}", ExceptionUtils.getErrorStackTrace(e)); + } + try{ + //6、党员自建群群众人数 :和评价周期无关 + groupUserCountMap = groupUserCountFuture.get(); + } catch (Exception e) { + log.error("党员相关-党建能力原始指标值【党员自建群群众人数】计算异常:{}", ExceptionUtils.getErrorStackTrace(e)); + } + try{ + //7、党员自建群活跃群众人数 + groupActiveUserCountMap = groupActiveUserCountFuture.get(); + } catch (Exception e) { + log.error("党员相关-党建能力原始指标值【党员自建群活跃群众人数】计算异常:{}", ExceptionUtils.getErrorStackTrace(e)); + } + try{ + //8、党员自建群活跃度——话题数:从话题表中统计党员自建群i的话题总数;对所有自建群话题数累加。 + groupTopicCountMap = groupTopicCountFuture.get(); + } catch (Exception e) { + log.error("党员相关-党建能力原始指标值【党员自建群活跃度】计算异常:{}", ExceptionUtils.getErrorStackTrace(e)); + } + + try{ + //9、自建群活跃度——议题转项目率 + topicToIssueRatioMap = topicToIssueRatioFuture.get(); + } catch (Exception e) { + log.error("党员相关-党建能力原始指标值【自建群活跃度】计算异常:{}", ExceptionUtils.getErrorStackTrace(e)); + } + + List list = new ArrayList<>(); + List> partionList = Lists.partition(indexPartyAblityCpcList, 200); + List>> entityFutures = new ArrayList<>(); + //2、计算实际值,更新 + for (List partList : partionList) { + String quarterId = DateUtils.getQuarterId(monthId); + String yearId = DateUtils.getYearId(monthId); + Map finalCreateTopicCountMap = createTopicCountMap; + Map finalJoinTopicCountMap = joinTopicCountMap; + Map finalShiftIssueCountMap = shiftIssueCountMap; + Map finalShiftProjectCountMap = shiftProjectCountMap; + Map finalJoinThreeMeetsCountMap = joinThreeMeetsCountMap; + Map finalGroupUserCountMap = groupUserCountMap; + Map finalGroupActiveUserCountMap = groupActiveUserCountMap; + Map finalGroupTopicCountMap = groupTopicCountMap; + Map finalTopicToIssueRatioMap = topicToIssueRatioMap; + //目前平阴2100多个党员,200个一组,开一个线程 + CompletableFuture> future = CompletableFuture.supplyAsync(() -> { + return constructEntity(monthId, + quarterId, + yearId, + partList, + finalCreateTopicCountMap, + finalJoinTopicCountMap, + finalShiftIssueCountMap, + finalShiftProjectCountMap, + finalJoinThreeMeetsCountMap, + finalGroupUserCountMap, + finalGroupActiveUserCountMap, + finalGroupTopicCountMap, + finalTopicToIssueRatioMap); + }); + + entityFutures.add(future); + } + + for (CompletableFuture> entityFuture : entityFutures) { + try { + List partList = entityFuture.get(); + list.addAll(partList); + } catch (InterruptedException e) { + log.error("党员相关-党建能力原始指标构造异常:{}", ExceptionUtils.getErrorStackTrace(e)); + } catch (Exception e) { + log.error("党员相关-党建能力原始指标构造异常:{}", ExceptionUtils.getErrorStackTrace(e)); + } + } + //3、删除之前统计过的、批插入批量插入 + factIndexPartyAblityCpcMonthlyService.delAndSavePartyAblityCpcMonthly(customerId, monthId, list); + } + + + private List constructEntity(String monthId, + String quarterId, + String yearId, + List partList, + Map createTopicCountMap, + Map joinTopicCountMap, + Map shiftIssueCountMap, + Map shiftProjectCountMap, + Map joinThreeMeetsCountMap, + Map groupUserCountMap, + Map groupActiveUserCountMap, + Map groupTopicCountMap, + Map topicToIssueRatioMap) { + List resultList = new ArrayList<>(); + for (FactIndexPartyAblityCpcMonthlyEntity temp : partList) { + FactIndexPartyAblityCpcMonthlyEntity indexPartyAblityCpcEntity = ConvertUtils.sourceToTarget(temp, FactIndexPartyAblityCpcMonthlyEntity.class); + indexPartyAblityCpcEntity.setMonthId(monthId); + indexPartyAblityCpcEntity.setQuarterId(quarterId); + indexPartyAblityCpcEntity.setYearId(yearId); + //1、党员提出话题数 + if (MapUtils.isNotEmpty(createTopicCountMap) && createTopicCountMap.containsKey(indexPartyAblityCpcEntity.getUserId())) { + indexPartyAblityCpcEntity.setCreateTopicCount(createTopicCountMap.get(indexPartyAblityCpcEntity.getUserId())); + } + //2、党员参与话题数(支持、反对、评论、浏览)---目前只统计 党员评论话题次数之和 + if (MapUtils.isNotEmpty(joinTopicCountMap) && joinTopicCountMap.containsKey(indexPartyAblityCpcEntity.getUserId())) { + indexPartyAblityCpcEntity.setJoinTopicCount(joinTopicCountMap.get(indexPartyAblityCpcEntity.getUserId())); + } + //3、党员提出的话题转议题数 + if (MapUtils.isNotEmpty(shiftIssueCountMap) && shiftIssueCountMap.containsKey(indexPartyAblityCpcEntity.getUserId())) { + indexPartyAblityCpcEntity.setShiftIssueCount(shiftIssueCountMap.get(indexPartyAblityCpcEntity.getUserId())); + } + //4、党员提出的议题转项目数 + if (MapUtils.isNotEmpty(shiftProjectCountMap) && shiftProjectCountMap.containsKey(indexPartyAblityCpcEntity.getUserId())) { + indexPartyAblityCpcEntity.setShiftProjectCount(shiftProjectCountMap.get(indexPartyAblityCpcEntity.getUserId())); + } + //5、参加“三会一课”次数 目前没有此业务,默认0 : 当前用户在本月内活动签到次数 限制活动分类编码100001 三会一课 + if (MapUtils.isNotEmpty(joinThreeMeetsCountMap) && joinThreeMeetsCountMap.containsKey(indexPartyAblityCpcEntity.getUserId())) { + indexPartyAblityCpcEntity.setJoinThreeMeetsCount(joinThreeMeetsCountMap.get(indexPartyAblityCpcEntity.getUserId())); + } + //6、党员自建群群众人数 + if (MapUtils.isNotEmpty(groupUserCountMap) && groupUserCountMap.containsKey(indexPartyAblityCpcEntity.getUserId())) { + indexPartyAblityCpcEntity.setGroupUserCount(groupUserCountMap.get(indexPartyAblityCpcEntity.getUserId())); + } + //7、党员自建群活跃群众人数 + if (MapUtils.isNotEmpty(groupActiveUserCountMap) && groupActiveUserCountMap.containsKey(indexPartyAblityCpcEntity.getUserId())) { + indexPartyAblityCpcEntity.setGroupActiveUserCount(groupActiveUserCountMap.get(indexPartyAblityCpcEntity.getUserId())); + } + //8、党员自建群活跃度——话题数 + if (MapUtils.isNotEmpty(groupTopicCountMap) && groupTopicCountMap.containsKey(indexPartyAblityCpcEntity.getUserId())) { + indexPartyAblityCpcEntity.setGroupTopicCount(groupTopicCountMap.get(indexPartyAblityCpcEntity.getUserId())); + } + //9、自建群活跃度——议题转项目率 + if (MapUtils.isNotEmpty(topicToIssueRatioMap) && topicToIssueRatioMap.containsKey(indexPartyAblityCpcEntity.getUserId())) { + indexPartyAblityCpcEntity.setTopicToIssueRatio(topicToIssueRatioMap.get(indexPartyAblityCpcEntity.getUserId())); + } + resultList.add(indexPartyAblityCpcEntity); + } + return resultList; + } + + /** * @param customerId * @param partyMemberList @@ -144,7 +383,7 @@ public class CalCpcIndexServiceImpl implements CalCpcIndexService { **/ private Map> queryUserCreatedGroups(String customerId, List partyMemberList) { Map> map = new HashMap<>(); - for (FactIndexPartyAblityCpcMonthlyEntity partyMember : partyMemberList) { + /*for (FactIndexPartyAblityCpcMonthlyEntity partyMember : partyMemberList) { //查询当前党员建了多少个组 List groupIdList=factOriginGroupMainDailyService.selectGroupIds(customerId,partyMember.getUserId()); if (CollectionUtils.isEmpty(groupIdList)) { @@ -153,6 +392,17 @@ public class CalCpcIndexServiceImpl implements CalCpcIndexService { } else { map.put(partyMember.getUserId(), groupIdList); } + }*/ + //查询出所有的小组,按照组长 + List list = factOriginGroupMainDailyService.selectGroupAndLeader(customerId); + Map> userGroupIdMap = list.stream().collect(Collectors.toMap(UserGroupIdDTO::getUserId, UserGroupIdDTO::getGroupIdList)); + for (FactIndexPartyAblityCpcMonthlyEntity partyMember : partyMemberList) { + if (MapUtils.isEmpty(userGroupIdMap) || !userGroupIdMap.containsKey(partyMember.getUserId())) { + map.put(partyMember.getUserId(), new ArrayList<>()); + continue; + } else { + map.put(partyMember.getUserId(), userGroupIdMap.get(partyMember.getUserId())); + } } return map; } @@ -265,7 +515,7 @@ public class CalCpcIndexServiceImpl implements CalCpcIndexService { //查询当前党员建了多少个组 List groupIdList = userCreatedGroups.get(partyMember.getUserId()); if (CollectionUtils.isEmpty(groupIdList)) { - log.info("当前党员userId="+partyMember.getUserId()+"没有创建过小组, 【党员相关-党员自建群群众人数】赋值0"); + // log.info("当前党员userId="+partyMember.getUserId()+"没有创建过小组, 【党员相关-党员自建群群众人数】赋值0"); map.put(partyMember.getUserId(), NumConstant.ZERO); continue; } @@ -311,7 +561,7 @@ public class CalCpcIndexServiceImpl implements CalCpcIndexService { //1、查询当前党员建了多少个组 List groupIdList = userCreatedGroups.get(partyMember.getUserId()); if (CollectionUtils.isEmpty(groupIdList)) { - log.warn("当前党员userId="+partyMember.getUserId()+"没有创建过小组, 【党员相关-党员自建群活跃群众人数】赋值0"); + // log.warn("当前党员userId="+partyMember.getUserId()+"没有创建过小组, 【党员相关-党员自建群活跃群众人数】赋值0"); map.put(partyMember.getUserId(), NumConstant.ZERO); continue; } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginGroupMainDailyService.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginGroupMainDailyService.java index 89beadf503..6b88a66d94 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginGroupMainDailyService.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginGroupMainDailyService.java @@ -19,6 +19,7 @@ package com.epmet.service.evaluationindex.extract.todata; import com.epmet.commons.mybatis.service.BaseService; import com.epmet.dto.extract.FactOriginGroupMainDailyDTO; +import com.epmet.dto.extract.UserGroupIdDTO; import com.epmet.dto.extract.form.ScreenPartyLinkMassesDataFormDTO; import com.epmet.dto.extract.result.GridGroupUserCountResultDTO; import com.epmet.dto.extract.result.OrgStatisticsResultDTO; @@ -125,4 +126,10 @@ public interface FactOriginGroupMainDailyService extends BaseService getPartyMemberGroupStatic(String customerId, String dateId, String type); + /** + * 查询出小组id ,组长userId + * @param customerId + * @return + */ + List selectGroupAndLeader(String customerId); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginGroupMainDailyServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginGroupMainDailyServiceImpl.java index 164b0b76dc..05c0720986 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginGroupMainDailyServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginGroupMainDailyServiceImpl.java @@ -22,8 +22,8 @@ import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.constant.OrgTypeConstant; import com.epmet.dao.evaluationindex.extract.FactOriginGroupMainDailyDao; -import com.epmet.dao.evaluationindex.extract.FactOriginGroupMemberDailyDao; import com.epmet.dto.extract.FactOriginGroupMainDailyDTO; +import com.epmet.dto.extract.UserGroupIdDTO; import com.epmet.dto.extract.form.ScreenPartyLinkMassesDataFormDTO; import com.epmet.dto.extract.result.GridGroupUserCountResultDTO; import com.epmet.dto.extract.result.OrgStatisticsResultDTO; @@ -198,4 +198,15 @@ public class FactOriginGroupMainDailyServiceImpl extends BaseServiceImpl selectGroupAndLeader(String customerId) { + return baseDao.selectGroupAndLeader(customerId); + } + } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginGroupMainDailyDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginGroupMainDailyDao.xml index c8c672e57f..4b4e709722 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginGroupMainDailyDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginGroupMainDailyDao.xml @@ -382,4 +382,22 @@ GRID_ID + + + + + + + + + + From d5bca533c53c903a40ba5141594a924fd0afb615 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Wed, 2 Mar 2022 10:04:37 +0800 Subject: [PATCH 044/115] =?UTF-8?q?calCpcPartyAbilityV2=E8=AF=95=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../extract/dataToIndex/impl/CalCpcIndexServiceImpl.java | 1 - 1 file changed, 1 deletion(-) diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/CalCpcIndexServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/CalCpcIndexServiceImpl.java index 817c412a3a..7694f0cb87 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/CalCpcIndexServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/CalCpcIndexServiceImpl.java @@ -85,7 +85,6 @@ public class CalCpcIndexServiceImpl implements CalCpcIndexService { Map joinThreeMeetsCountMap=calJoinThreeMeetsCount(customerId,monthId); //可以先查询出每个党员的 自建群 - //todo Map> userCreatedGroups = queryUserCreatedGroups(customerId, indexPartyAblityCpcList); //6、党员自建群群众人数 :和评价周期无关 Map groupUserCountMap = calgroupUserCount(customerId, monthId, indexPartyAblityCpcList, userCreatedGroups); From 861d46638ecb76959a21f37e34d977668df56081 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Wed, 2 Mar 2022 10:42:04 +0800 Subject: [PATCH 045/115] 500 --- .../impl/CalCpcIndexServiceImpl.java | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/CalCpcIndexServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/CalCpcIndexServiceImpl.java index 7694f0cb87..cb5620eb0a 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/CalCpcIndexServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/CalCpcIndexServiceImpl.java @@ -261,7 +261,7 @@ public class CalCpcIndexServiceImpl implements CalCpcIndexService { } List list = new ArrayList<>(); - List> partionList = Lists.partition(indexPartyAblityCpcList, 200); + List> partionList = Lists.partition(indexPartyAblityCpcList, 500); List>> entityFutures = new ArrayList<>(); //2、计算实际值,更新 for (List partList : partionList) { @@ -415,11 +415,13 @@ public class CalCpcIndexServiceImpl implements CalCpcIndexService { * @Date 2020/9/18 10:59 **/ private Map calCreateTopicCount(String customerId, String monthId) { + long startCpc = System.currentTimeMillis(); List list = factOriginTopicMainDailyService.selectPartyCreateTopicCount(customerId, monthId); Map resultMap = new HashMap<>(); for (CpcIndexCommonDTO cpcIndexCommonDTO: list) { resultMap.put(cpcIndexCommonDTO.getUserId(), cpcIndexCommonDTO.getIndexValue()); } + log.warn("1、党员相关-党建能力【党员提出话题数】执行完毕======总耗时:{}ms,customerId:{}", System.currentTimeMillis() - startCpc, customerId); return resultMap; } @@ -432,11 +434,13 @@ public class CalCpcIndexServiceImpl implements CalCpcIndexService { * @Date 2020/9/18 13:33 **/ private Map calJoinTopicCount(String customerId, String monthId) { + long startCpc = System.currentTimeMillis(); List list = factOriginTopicLogDailyService.selectJoinTopicCount(customerId, monthId); Map resultMap = new HashMap<>(); for (CpcIndexCommonDTO cpcIndexCommonDTO : list) { resultMap.put(cpcIndexCommonDTO.getUserId(), cpcIndexCommonDTO.getIndexValue()); } + log.warn("2、党员相关-党建能力【党员参与话题数】执行完毕======总耗时:{}ms,customerId:{}", System.currentTimeMillis() - startCpc, customerId); return resultMap; } @@ -450,11 +454,13 @@ public class CalCpcIndexServiceImpl implements CalCpcIndexService { * @Date 2020/9/18 13:53 **/ private Map calShiftIssueCount(String customerId, String monthId) { + long startCpc = System.currentTimeMillis(); List list = issueExtractService.selectShiftIssueCount(customerId, monthId); Map resultMap = new HashMap<>(); for (CpcIndexCommonDTO cpcIndexCommonDTO : list) { resultMap.put(cpcIndexCommonDTO.getUserId(), cpcIndexCommonDTO.getIndexValue()); } + log.warn("3、党员相关-党建能力【党员提出的话题转议题数】执行完毕======总耗时:{}ms,customerId:{}", System.currentTimeMillis() - startCpc, customerId); return resultMap; } @@ -467,12 +473,14 @@ public class CalCpcIndexServiceImpl implements CalCpcIndexService { * @Date 2020/9/18 14:10 **/ private Map calShiftProjectCount(String customerId, String monthId) { + long startCpc = System.currentTimeMillis(); //查询fact_origin_project_main_daily 表 中议题的议题的状态为 shift_ List list = factOriginProjectMainDailyService.selectShiftProjectCount(customerId, monthId); Map resultMap = new HashMap<>(); for (CpcIndexCommonDTO cpcIndexCommonDTO : list) { resultMap.put(cpcIndexCommonDTO.getUserId(), cpcIndexCommonDTO.getIndexValue()); } + log.warn("4、党员相关-党建能力【党员提出的议题转项目数】执行完毕======总耗时:{}ms,customerId:{}", System.currentTimeMillis() - startCpc, customerId); return resultMap; } @@ -485,12 +493,14 @@ public class CalCpcIndexServiceImpl implements CalCpcIndexService { * @Date 2021/5/12 13:38 **/ private Map calJoinThreeMeetsCount(String customerId, String monthId) { + long startCpc = System.currentTimeMillis(); //查询小组活动签到表,计算用户在本月内签到的活动次数 List list=groupDataService.selectJoinThreeMeetsCount(customerId,monthId); Map resultMap = new HashMap<>(); for (CpcIndexCommonDTO cpcIndexCommonDTO : list) { resultMap.put(cpcIndexCommonDTO.getUserId(), cpcIndexCommonDTO.getIndexValue()); } + log.warn("5、党员相关-党建能力【参加“三会一课”次数】执行完毕======总耗时:{}ms,customerId:{}", System.currentTimeMillis() - startCpc, customerId); return resultMap; } @@ -505,6 +515,7 @@ public class CalCpcIndexServiceImpl implements CalCpcIndexService { private Map calgroupUserCount(String customerId, String monthId, List partyMemberList, Map> userCreatedGroups) { + long startCpc = System.currentTimeMillis(); /*含义:评价周期内,党员自建群中群众成员数。 数据来源:用户社群关系表。 计算方法:对党员i的所有j个自建群,从用户社群关系表中统计属于每个自建群的群众用户总人数,并对j个群众用户总数进行不重复累加。 @@ -528,6 +539,7 @@ public class CalCpcIndexServiceImpl implements CalCpcIndexService { map.put(partyMember.getUserId(), memberIdList.size()); } } + log.warn("6、党员相关-党建能力【党员自建群群众人数】执行完毕======总耗时:{}ms,customerId:{}", System.currentTimeMillis() - startCpc, customerId); return map; } @@ -543,6 +555,7 @@ public class CalCpcIndexServiceImpl implements CalCpcIndexService { private Map calGroupActiveUserCount(String customerId, String monthId, List partyMemberList, Map> userCreatedGroups) { + long startCpc = System.currentTimeMillis(); /*含义:评价周期内,党员自建群中活跃群众成员数。所谓活跃群成员,即评价周期内参与话题、事件评论、点赞、点踩总次数大于给定阈值的群众用户。 数据来源:话题用户阅读表、话题评论用户表态表、话题评论表、事件点赞点踩表、事件评论点赞点踩表、事件评论表、用户信息表。 计算方法: @@ -570,6 +583,7 @@ public class CalCpcIndexServiceImpl implements CalCpcIndexService { map.put(partyMember.getUserId(), NumConstant.ZERO); continue; } + //todo 可以先把本月内评论的用户+本月内表决过的用户 集合查询出来。避免循环查询 //3、判断每个成员是否 “活跃” for (String memberId : memberIdList) { //1、判断成员在本月内是否评论过 @@ -587,6 +601,7 @@ public class CalCpcIndexServiceImpl implements CalCpcIndexService { //赋值每个党员的 -- 党员自建群活跃群众人数 map.put(partyMember.getUserId(), groupActiveUserCount); } + log.warn("7、党员相关-党建能力【党员自建群活跃群众人数】执行完毕======总耗时:{}ms,customerId:{}", System.currentTimeMillis() - startCpc, customerId); return map; } @@ -600,6 +615,7 @@ public class CalCpcIndexServiceImpl implements CalCpcIndexService { * @Date 2020/9/18 14:31 **/ private Map calGroupTopicCount(String customerId, String monthId) { + long startCpc = System.currentTimeMillis(); /*含义:评价周期内,党员自建群中话题发布数。 数据来源:话题表。 计算方法:从话题表中统计党员自建群i的话题总数;对所有自建群话题数累加。 @@ -609,6 +625,7 @@ public class CalCpcIndexServiceImpl implements CalCpcIndexService { for (CpcIndexCommonDTO dto : list) { resultMap.put(dto.getUserId(), dto.getIndexValue()); } + log.warn("8、党员相关-党建能力【党员自建群活跃度——话题数】执行完毕======总耗时:{}ms,customerId:{}", System.currentTimeMillis() - startCpc, customerId); return resultMap; } @@ -623,6 +640,7 @@ public class CalCpcIndexServiceImpl implements CalCpcIndexService { String monthId, List partyMemberList, Map> userCreatedGroups) { + long startCpc = System.currentTimeMillis(); Map map = new HashMap<>(); for (FactIndexPartyAblityCpcMonthlyEntity partyMember : partyMemberList) { //如果党员自建群为空,直接赋值0 @@ -657,6 +675,7 @@ public class CalCpcIndexServiceImpl implements CalCpcIndexService { BigDecimal topicToIssueRatio = new BigDecimal(topicToIssueRatioStr).multiply(new BigDecimal(NumConstant.ONE_HUNDRED)); map.put(partyMember.getUserId(), topicToIssueRatio); } + log.warn("9、党员相关-党建能力【自建群活跃度——议题转项目率】执行完毕======总耗时:{}ms,customerId:{}", System.currentTimeMillis() - startCpc, customerId); return map; } From 51025f50580cf0bee40a80acd64b91d2fe282b0d Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Wed, 2 Mar 2022 13:43:58 +0800 Subject: [PATCH 046/115] =?UTF-8?q?=E5=85=9A=E5=91=98=E8=87=AA=E5=BB=BA?= =?UTF-8?q?=E7=BE=A4=E6=B4=BB=E8=B7=83=E7=BE=A4=E4=BC=97=E4=BA=BA=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../extract/FactOriginIssueLogDailyDao.java | 8 +++++++ .../extract/FactOriginTopicLogDailyDao.java | 8 +++++++ .../impl/CalCpcIndexServiceImpl.java | 18 +++++++++++---- .../FactOriginTopicLogDailyService.java | 8 +++++++ .../extract/todata/IssueExtractService.java | 8 +++++++ .../FactOriginTopicLogDailyServiceImpl.java | 12 ++++++++++ .../todata/impl/IssueExtractServiceImpl.java | 13 +++++++++++ .../extract/FactOriginIssueLogDailyDao.xml | 22 ++++++++++++++++++ .../extract/FactOriginTopicLogDailyDao.xml | 23 +++++++++++++++++++ 9 files changed, 116 insertions(+), 4 deletions(-) diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginIssueLogDailyDao.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginIssueLogDailyDao.java index 5e9177adf7..aa77da7fc6 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginIssueLogDailyDao.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginIssueLogDailyDao.java @@ -170,4 +170,12 @@ public interface FactOriginIssueLogDailyDao extends BaseDao */ List getClosedIssueIncr(@Param("customerId") String customerId, @Param("dateId") String dateId); + + /** + * 查询出本月内做过议题表决的用户id + * @param customerId + * @param monthId + * @return + */ + List queryVoteUserIds(@Param("customerId")String customerId, @Param("monthId")String monthId); } \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginTopicLogDailyDao.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginTopicLogDailyDao.java index ef3ab5e833..0e8b939582 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginTopicLogDailyDao.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginTopicLogDailyDao.java @@ -103,4 +103,12 @@ public interface FactOriginTopicLogDailyDao extends BaseDao selectPartyActiveTopic(@Param("customerId")String customerId,@Param("monthId") String monthId,@Param("isParty") Integer isParty); + + /** + * 查询出本月内,评论过话题的用户id + * @param customerId + * @param monthId + * @return + */ + List queryCommentTopicUserIds(@Param("customerId") String customerId, @Param("monthId")String monthId); } \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/CalCpcIndexServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/CalCpcIndexServiceImpl.java index cb5620eb0a..90f39088ea 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/CalCpcIndexServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/CalCpcIndexServiceImpl.java @@ -583,19 +583,29 @@ public class CalCpcIndexServiceImpl implements CalCpcIndexService { map.put(partyMember.getUserId(), NumConstant.ZERO); continue; } - //todo 可以先把本月内评论的用户+本月内表决过的用户 集合查询出来。避免循环查询 + //可以先把本月内评论的用户+本月内表决过的用户 集合查询出来。避免循环查询 + List commentTopicUserIds=factOriginTopicLogDailyService.queryCommentTopicUserIds(customerId,monthId); + List voteUserIds=issueExtractService.queryVoteUserIds(customerId,monthId); //3、判断每个成员是否 “活跃” for (String memberId : memberIdList) { + //注释2022.03.02 //1、判断成员在本月内是否评论过 - Integer topicCommentCount = factOriginTopicLogDailyService.selectUserCommentCount(memberId, customerId, monthId); + /*Integer topicCommentCount = factOriginTopicLogDailyService.selectUserCommentCount(memberId, customerId, monthId); if (topicCommentCount > 0) { groupActiveUserCount++; continue; - } + }*/ //2、判断成员在本月内是否表决过(支持or反对)议题 - Integer voteCount = issueExtractService.selectCountUserVote(memberId, customerId, monthId); + /*Integer voteCount = issueExtractService.selectCountUserVote(memberId, customerId, monthId); if (voteCount > 0) { groupActiveUserCount++; + }*/ + if (CollectionUtils.isNotEmpty(commentTopicUserIds) && commentTopicUserIds.contains(memberId)) { + groupActiveUserCount++; + continue; + } + if (CollectionUtils.isNotEmpty(voteUserIds) && voteUserIds.contains(memberId)) { + groupActiveUserCount++; } } //赋值每个党员的 -- 党员自建群活跃群众人数 diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginTopicLogDailyService.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginTopicLogDailyService.java index 7c43394dea..6820edb992 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginTopicLogDailyService.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginTopicLogDailyService.java @@ -79,4 +79,12 @@ public interface FactOriginTopicLogDailyService extends BaseService selectPartyActiveTopic(String customerId, String monthId,Integer isParty); + + /** + * 查询出本月内,评论过话题的用户id + * @param customerId + * @param monthId + * @return + */ + List queryCommentTopicUserIds(String customerId, String monthId); } \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/IssueExtractService.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/IssueExtractService.java index 85caea8cc5..010791542e 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/IssueExtractService.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/IssueExtractService.java @@ -107,4 +107,12 @@ public interface IssueExtractService { * @date 2020/9/21 9:37 上午 */ List selectPartyActiveIssueVote(String customerId, String monthId, Integer isParty); + + /** + * 查询出本月内做过议题表决的用户id + * @param customerId + * @param monthId + * @return + */ + List queryVoteUserIds(String customerId, String monthId); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginTopicLogDailyServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginTopicLogDailyServiceImpl.java index 70ecc1807f..46da054bd8 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginTopicLogDailyServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginTopicLogDailyServiceImpl.java @@ -108,4 +108,16 @@ public class FactOriginTopicLogDailyServiceImpl extends BaseServiceImpl selectPartyActiveTopic(String customerId, String monthId, Integer isParty) { return baseDao.selectPartyActiveTopic(customerId, monthId, isParty); } + + /** + * 查询出本月内,评论过话题的用户id + * + * @param customerId + * @param monthId + * @return + */ + @Override + public List queryCommentTopicUserIds(String customerId, String monthId) { + return baseDao.queryCommentTopicUserIds(customerId,monthId); + } } \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/IssueExtractServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/IssueExtractServiceImpl.java index 4cdd1368e6..d55cfdcc71 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/IssueExtractServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/IssueExtractServiceImpl.java @@ -374,4 +374,17 @@ public class IssueExtractServiceImpl implements IssueExtractService { public List selectPartyActiveIssueVote(String customerId, String monthId, Integer isParty) { return issueLogDailyDao.selectPartyActiveIssueVote(customerId, monthId, isParty); } + + /** + * 查询出本月内做过议题表决的用户id + * + * @param customerId + * @param monthId + * @return + */ + @Override + public List queryVoteUserIds(String customerId, String monthId) { + return issueLogDailyDao.queryVoteUserIds(customerId,monthId); + } + } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginIssueLogDailyDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginIssueLogDailyDao.xml index 995c6cebad..6c8aa06b96 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginIssueLogDailyDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginIssueLogDailyDao.xml @@ -237,4 +237,26 @@ GRID_ID, OPERATION_USER_ID + + \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginTopicLogDailyDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginTopicLogDailyDao.xml index 1d7bc88cab..8e6f652f07 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginTopicLogDailyDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginTopicLogDailyDao.xml @@ -143,4 +143,27 @@ AND CUSTOMER_ID = #{customerId} AND MONTH_ID = #{monthId} + + + \ No newline at end of file From 4e22972fe483236548e1b357302363f2d815117e Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Wed, 2 Mar 2022 13:46:16 +0800 Subject: [PATCH 047/115] =?UTF-8?q?=E5=AF=BC=E5=85=A5=E7=A8=8B=E5=BA=8F?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/IcPartymemberStyleServiceImpl.java | 73 ++++++++++--------- 1 file changed, 37 insertions(+), 36 deletions(-) diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleServiceImpl.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleServiceImpl.java index 77caf1bede..4abeba9207 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleServiceImpl.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleServiceImpl.java @@ -326,44 +326,45 @@ public class IcPartymemberStyleServiceImpl extends BaseServiceImpl imageList = new ArrayList<>(); - List list = result.stream().map(item -> { - IcPartymemberStyleEntity entity = new IcPartymemberStyleEntity(); - entity.setId(UUID.randomUUID().toString().replace("-", "")); - entity.setCustomerId(tokenDto.getCustomerId()); - entity.setAgencyId(staffInfoCache.getAgencyId()); - entity.setGridId(gridMap.get(item.getGridName())); - GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(entity.getGridId()); - if (null != gridInfo) { - entity.setGridPids(gridInfo.getPids()); - } - entity.setName(item.getName()); - entity.setMainDeed(item.getMainDeed()); - IcPartymemberStyleCategoryDictEntity dictEntity=categoryDictMap.get(item.getCategoryName()); - entity.setCategoryId(null == dictEntity ? StrConstant.EPMETY_STR : dictEntity.getId()); - entity.setCategoryCode(null == dictEntity ? StrConstant.EPMETY_STR : dictEntity.getCategoryCode()); - AtomicInteger i = new AtomicInteger(); - return entity; - }).collect(Collectors.toList()); + /*if (CollectionUtils.isEmpty(result)) { + Collections.sort(numList); + String subList = numList.stream().map(String::valueOf).collect(Collectors.joining("、")); + return new Result().error(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "第" + subList + "行未成功!"); + }*/ + if (!CollectionUtils.isEmpty(result)) { + List imageList = new ArrayList<>(); + List list = result.stream().map(item -> { + IcPartymemberStyleEntity entity = new IcPartymemberStyleEntity(); + entity.setId(UUID.randomUUID().toString().replace("-", "")); + entity.setCustomerId(tokenDto.getCustomerId()); + entity.setAgencyId(staffInfoCache.getAgencyId()); + entity.setGridId(gridMap.get(item.getGridName())); + GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(entity.getGridId()); + if (null != gridInfo) { + entity.setGridPids(gridInfo.getPids()); + } + entity.setName(item.getName()); + entity.setMainDeed(item.getMainDeed()); + IcPartymemberStyleCategoryDictEntity dictEntity=categoryDictMap.get(item.getCategoryName()); + entity.setCategoryId(null == dictEntity ? StrConstant.EPMETY_STR : dictEntity.getId()); + entity.setCategoryCode(null == dictEntity ? StrConstant.EPMETY_STR : dictEntity.getCategoryCode()); + AtomicInteger i = new AtomicInteger(); + return entity; + }).collect(Collectors.toList()); - insertBatch(list); - icPartymemberStyleImageService.insertBatch(imageList); + insertBatch(list); + icPartymemberStyleImageService.insertBatch(imageList); - /*String str = String.format("共%s条,成功导入%s条。", numList.size() + result.size(), numList.size() + result.size() - numList.size()); - if (numList.size() > NumConstant.ZERO) { - Collections.sort(numList); - String subList = numList.stream().map(String::valueOf).collect(Collectors.joining("、")); - log.warn(str + "第" + subList + "行未成功!"); - return new Result().error(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), str + "第" + subList + "行未成功!"); - } - return new Result().ok(str);*/ + /*String str = String.format("共%s条,成功导入%s条。", numList.size() + result.size(), numList.size() + result.size() - numList.size()); + if (numList.size() > NumConstant.ZERO) { + Collections.sort(numList); + String subList = numList.stream().map(String::valueOf).collect(Collectors.joining("、")); + log.warn(str + "第" + subList + "行未成功!"); + return new Result().error(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), str + "第" + subList + "行未成功!"); + } + return new Result().ok(str);*/ + } + //生成导入失败数据对应的文件,修改任务状态 String url = erroeImport(fileList); upImportTask(url, taskId, tokenDto.getUserId(), true); } catch (Exception e) { From 936932d060d7e31ce7378cfec8b6f4b4d38bb60c Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Wed, 2 Mar 2022 14:53:50 +0800 Subject: [PATCH 048/115] calCpcPartyAbilityV2 --- .../dataToIndex/impl/IndexOriginExtractServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/IndexOriginExtractServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/IndexOriginExtractServiceImpl.java index b07c82ceb9..1548abed61 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/IndexOriginExtractServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/IndexOriginExtractServiceImpl.java @@ -101,7 +101,8 @@ public class IndexOriginExtractServiceImpl implements IndexOriginExtractService executorService.submit(() -> { try { long startCpc = System.currentTimeMillis(); - calCpcIndexService.calCpcPartyAbility(customerId, monthId); + // calCpcIndexService.calCpcPartyAbility(customerId, monthId); + calCpcIndexService.calCpcPartyAbilityV2(customerId, monthId); log.info("党员相关-党建能力执行完毕======总耗时:{}ms,customerId:{}", System.currentTimeMillis() - startCpc, param.getCustomerId()); } catch (Exception e) { log.error("抽取【党员相关数据】发生异常,参数:" + JSON.toJSONString(param), e); From 19f1d22d1d44aebabea7e29b0397b40f2c5cad44 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Wed, 2 Mar 2022 15:39:26 +0800 Subject: [PATCH 049/115] add index sql --- .../db/migration/V0.0.29__addindex_forcpcability.sql | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 epmet-module/data-statistical/data-statistical-server/src/main/resources/db/migration/V0.0.29__addindex_forcpcability.sql diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/db/migration/V0.0.29__addindex_forcpcability.sql b/epmet-module/data-statistical/data-statistical-server/src/main/resources/db/migration/V0.0.29__addindex_forcpcability.sql new file mode 100644 index 0000000000..48f8576eb6 --- /dev/null +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/db/migration/V0.0.29__addindex_forcpcability.sql @@ -0,0 +1,5 @@ +-- stat库执行 +alter table fact_origin_topic_main_daily add index `IDX_TOPIC_MAIN_GROUP_ID` (`GROUP_ID`); +alter table fact_origin_project_main_daily add index `IDX_P_MAIN_TOPIC_ID` (`TOPIC_ID`); +alter table fact_origin_issue_main_daily add index `IDX_ISSUE_MAIN_TOPIC_ID` (`TOPIC_ID`); +alter table fact_origin_group_member_daily add index `IDX_GM_GROUP_ID` (`GROUP_ID`); \ No newline at end of file From 99ded4a8ea6c3aa2620dd5861cadebde52b7763b Mon Sep 17 00:00:00 2001 From: jianjun Date: Wed, 2 Mar 2022 16:35:01 +0800 Subject: [PATCH 050/115] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=98=B2=E9=87=8D?= =?UTF-8?q?=E5=A4=8D=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/epmet/controller/ArticleController.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/ArticleController.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/ArticleController.java index d81affca3a..4c7457f4c3 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/ArticleController.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/ArticleController.java @@ -19,6 +19,7 @@ package com.epmet.controller; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.annotation.RequirePermission; +import com.epmet.commons.tools.aop.NoRepeatSubmit; import com.epmet.commons.tools.enums.RequirePermissionEnum; import com.epmet.commons.tools.scan.result.SyncScanResult; import com.epmet.commons.tools.security.dto.TokenDto; @@ -218,6 +219,7 @@ public class ArticleController { * @param formDTO * @throws Exception */ + @NoRepeatSubmit @PostMapping("publish") @RequirePermission(requirePermission = RequirePermissionEnum.WORK_PARTY_VOICE_PUBLISH) public Result publishArticle(@LoginUser TokenDto tokenDto, @RequestBody PublishArticleFormDTO formDTO) throws Exception { @@ -234,6 +236,7 @@ public class ArticleController { * @param formDTO * @throws Exception */ + @NoRepeatSubmit @PostMapping("manualpublish") @RequirePermission(requirePermission = RequirePermissionEnum.WORK_PARTY_VOICE_PUBLISH) public Result manualPublish(@LoginUser TokenDto tokenDto, @RequestBody PublishArticleFormDTO formDTO) throws Exception { From a195f893230c2f08ae6dbfbc743c6029e3fd6f19 Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Thu, 3 Mar 2022 09:52:53 +0800 Subject: [PATCH 051/115] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E5=88=86=E7=B1=BB?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E5=AF=BC=E5=87=BA=E6=96=87=E4=BB=B6=E6=97=A5?= =?UTF-8?q?=E6=9C=9F=E4=B8=8D=E5=AF=B9=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../datareport/controller/screen/ScreenProjectController.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/ScreenProjectController.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/ScreenProjectController.java index 5b9e5c314d..28cf89d084 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/ScreenProjectController.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/ScreenProjectController.java @@ -204,6 +204,7 @@ public class ScreenProjectController { //tokenDto.setUserId("36bc0fb38565ecdebf8ab9b476b44548"); //tokenDto.setCustomerId("45687aa479955f9d06204d415238f7cc"); ValidatorUtils.validateEntity(formDTO, ProjectCategoryFormDTO.CategoryProjectExportForm.class); + String openTime = formDTO.getStartTime(); List data = screenProjectService.selectProjectCategory(formDTO, tokenDto); String templatePath = "excel/project_category_temp.xlsx"; @@ -216,7 +217,7 @@ public class ScreenProjectController { Map mapData = new HashMap<>(); mapData.put("list",resultDTOList); mapData.put("orgName", formDTO.getOrgName()); - mapData.put("exportDate",getExportDateStr(formDTO.getStartTime(),formDTO.getEndTime())); + mapData.put("exportDate", getExportDateStr(openTime, formDTO.getEndTime())); Workbook workbook = ExcelExportUtil.exportExcel(new TemplateExportParams(templatePath), mapData); response.setHeader("content-Type", "application/vnd.ms-excel"); response.addHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode("项目分类统计.xls", "UTF-8")); From b07057b14ca5539f187a2cc33abde23ec3f337e5 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Thu, 3 Mar 2022 10:29:49 +0800 Subject: [PATCH 052/115] NullPointerException --- .../main/java/com/epmet/service/impl/IcResiUserServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java index f912200041..1e22b13b33 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java @@ -641,7 +641,7 @@ public class IcResiUserServiceImpl extends BaseServiceImpl nameList=new ArrayList<>(); for(String codePath:demandCodePath){ - if(codePath.contains(StrConstant.COMMA)){ + if (StringUtils.isNotBlank(codePath) && codePath.contains(StrConstant.COMMA)) { String[] codeAtt=codePath.split(StrConstant.COMMA); String code=codeAtt[codeAtt.length-1]; if(StringUtils.isNotBlank(code)&&demandDictMap.containsKey(code)){ From fa473bb10cdbacb94132956278c651929e6cbe3f Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Thu, 3 Mar 2022 10:50:43 +0800 Subject: [PATCH 053/115] =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9A=20=E3=80=90?= =?UTF-8?q?=E5=B1=85=E6=B0=91=E4=BF=A1=E6=81=AF=E5=AF=BC=E5=85=A5=E3=80=91?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E5=8F=98=E6=9B=B4=E3=80=82bug=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/feign/EpmetUserOpenFeignClient.java | 2 +- .../controller/IcResiUserController.java | 74 ++- .../java/com/epmet/dao/IcResiUserDao.java | 2 +- .../com/epmet/enums/IcResiUserTableEnum.java | 62 ++- .../IcResiVirtualSheetImportListener.java | 44 ++ .../impl/IcResiUserImportServiceImpl.java | 468 ++++++++---------- .../main/resources/mapper/IcResiUserDao.xml | 6 +- 7 files changed, 340 insertions(+), 318 deletions(-) create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcResiVirtualSheetImportListener.java diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java index 9cfd689cfc..d1d176cbe9 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java @@ -650,7 +650,7 @@ public interface EpmetUserOpenFeignClient { @GetMapping(value = "/epmetuser/user/queryUserClient/{userId}") Result queryUserClient(@PathVariable("userId") String userId); - @PostMapping("/epmetuser/icresidemanddict/demandoption/demandoption") + @PostMapping("/epmetuser/icresidemanddict/demandoption") Result> getDemandOptions(); @PostMapping("/epmetuser/icresiuser/categorycount") diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java index e149317c56..0c3adbb8fa 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java @@ -71,6 +71,7 @@ import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.support.StandardMultipartHttpServletRequest; @@ -439,7 +440,7 @@ public class IcResiUserController implements ResultDataResolver { } String originalFilename = file.getOriginalFilename(); - // 校验文件类型 + // 一.校验文件类型 String extension = FilenameUtils.getExtension(originalFilename); if (!"xls".equals(extension) && !"xlsx".equals(extension)) { throw new RenException("文件类型不匹配"); @@ -447,9 +448,9 @@ public class IcResiUserController implements ResultDataResolver { String operatorId = loginUserUtil.getLoginUserId(); - String importTaskId = icResiUserImportService.createImportTaskRecord(operatorId, ImportTaskConstants.BIZ_TYPE_RESI, originalFilename);; + String importTaskId = icResiUserImportService.createImportTaskRecord(operatorId, ImportTaskConstants.BIZ_TYPE_RESI, originalFilename); - // 缓存上传的文件 + // 二.缓存上传的文件 Path importTempFileSavePath; try { String fileName = UUID.randomUUID().toString().concat(".").concat(extension); @@ -460,22 +461,46 @@ public class IcResiUserController implements ResultDataResolver { throw new RenException("上传失败"); } - final Path importTempFileSavePathFinal = importTempFileSavePath; - HttpServletRequest request = ((StandardMultipartHttpServletRequest)multipartRequest).getRequest(); HashMap headers = getHeadersFromRequest(request); - // 异步执行导入 + // 三.异步执行导入 CompletableFuture.runAsync(() -> { + try { // 睡眠2秒钟,等待主线程先结束,主线程会清空request对象的headers,等他执行了清空之后,我们这边再手动setHeader进去 - Thread.sleep(1000l); + Thread.sleep(2000l); + System.out.println("请求头:" + headers); } catch (InterruptedException e) { - e.printStackTrace(); + String errorMsg = ExceptionUtils.getErrorStackTrace(e); + log.error("【上传居民信息】失败,睡眠2s发生中断:{}", errorMsg); + return; + } + + try { + setHeaders2Request(request, headers); + + List formItemList = icResiUserService.listFormItems(customerId,IcFormCodeEnum.RESI_BASE_INFO.getCode()); + icResiUserImportService.importIcResiInfoFromExcel(importTaskId, formItemList, importTempFileSavePath.toString(), response, IC_RESI_UPLOAD_DIR); + } catch (Throwable e) { + String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e); + log.error("【导入居民信息失败】导入失败:{}", errorMsg); + + // 要将导入任务状态设置为结束但不成功。不报错即成功,没有返回值 + icResiUserImportService.finishImportTask(importTaskId, operatorId, ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL, "系统异常,请查看系统日志", null); + } finally { + try { + if (importTempFileSavePath != null){ + Files.delete(importTempFileSavePath); + } + } catch (IOException e) { + log.error("【导入居民信息失败】清理上传的文件失败:{}", ExceptionUtils.getErrorStackTrace(e)); + } + + // 清理request对象 + RequestContextHolder.resetRequestAttributes(); } - setHeaders2Request(request, headers); - submitResiImportTask(customerId, operatorId, importTaskId, importTempFileSavePathFinal, response); }); return new Result(); @@ -524,35 +549,6 @@ public class IcResiUserController implements ResultDataResolver { } } - /** - * 提交居民导入任务 - * @param customerId - * @param operatorId - * @param importTaskId - * @param response - */ - private void submitResiImportTask(String customerId, String operatorId, String importTaskId, Path importTempFileSavePath, HttpServletResponse response) { - - try { - List formItemList = icResiUserService.listFormItems(customerId,IcFormCodeEnum.RESI_BASE_INFO.getCode()); - icResiUserImportService.importIcResiInfoFromExcel(importTaskId, formItemList, importTempFileSavePath.toString(), response, IC_RESI_UPLOAD_DIR); - } catch (Throwable e) { - String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e); - log.error("【导入居民信息失败】导入失败:{}", errorMsg); - - // 要将导入任务状态设置为结束但不成功。不报错即成功,没有返回值 - icResiUserImportService.finishImportTask(importTaskId, operatorId, ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL, "系统异常,请查看系统日志", null); - } finally { - try { - if (importTempFileSavePath != null){ - Files.delete(importTempFileSavePath); - } - } catch (IOException e) { - log.error("【导入居民信息失败】清理上传的文件失败:{}", ExceptionUtils.getErrorStackTrace(e)); - } - } - } - @PostMapping("test") public Result>> test(@LoginUser TokenDto tokenDto, @RequestBody DynamicQueryFormDTO formDTO) { formDTO.setCustomerId("45687aa479955f9d06204d415238f7cc"); diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java index d152fc3776..35abe08623 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java @@ -239,7 +239,7 @@ public interface IcResiUserDao extends BaseDao { Map getCategoryListMap(@Param("columns")List columns, @Param("icUserId") String icUserId); - Map selectResiInfoMap(@Param("idCard") String idCard); + Map selectResiInfoMap(@Param("idCard") String idCard, @Param("resiId") String resiId); List> selectResiUsers(@Param("types")List types,@Param("orgId")String orgId); diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/enums/IcResiUserTableEnum.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/enums/IcResiUserTableEnum.java index 9d72768f33..5bb46b6369 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/enums/IcResiUserTableEnum.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/enums/IcResiUserTableEnum.java @@ -1,6 +1,9 @@ package com.epmet.enums; import lombok.AllArgsConstructor; +import lombok.Data; + +import java.util.List; /** * @Description 描述 @@ -13,21 +16,40 @@ public enum IcResiUserTableEnum { /** * 注释 */ - IC_RESI_USER("ic_resi_user","社区居民基本信息录入表", 0, 3, null), - IC_PARTY_MEMBER("ic_party_member","党员信息录入表", 1, 2, "IS_PARTY"), - IC_ENSURE_HOUSE("ic_ensure_house","保障房人员信息录入表", 2, 2, "IS_ENSURE_HOUSE"), - IC_UNEMPLOYED("ic_unemployed","失业人员信息录入表", 3, 2, "IS_UNEMPLOYED"), - IC_VETERANS("ic_veterans","退役军人信息录入表", 4, 2, "IS_VETERANS"), - IC_UNITED_FRONT("ic_united_front","统战人员信息录入表", 5, 2, "IS_UNITED_FRONT"), - IC_VOLUNTEER("ic_volunteer","志愿者信息录入表", 6, 3, "IS_VOLUNTEER"), - IC_OLD_PEOPLE("ic_old_people","老年人信息录入表", 7, 2, "IS_OLD_PEOPLE"), - IC_SPECIAL("ic_special","特殊人群信息录入表", 8, 3, "IS_SPECIAL"); + IC_RESI_USER("ic_resi_user","社区居民基本信息录入表", 0, 3, null, true), + IC_PARTY_MEMBER("ic_party_member","党员信息录入表", 1, 2, "IS_PARTY", true), + IC_ENSURE_HOUSE("ic_ensure_house","保障房人员信息录入表", 2, 2, "IS_ENSURE_HOUSE", true), + IC_UNEMPLOYED("ic_unemployed","失业人员信息录入表", 3, 2, "IS_UNEMPLOYED", true), + IC_VETERANS("ic_veterans","退役军人信息录入表", 4, 2, "IS_VETERANS", true), + IC_UNITED_FRONT("ic_united_front","统战人员信息录入表", 5, 2, "IS_UNITED_FRONT", true), + IC_VOLUNTEER("ic_volunteer","志愿者信息录入表", 6, 3, "IS_VOLUNTEER", true), + IC_OLD_PEOPLE("ic_old_people","老年人信息录入表", 7, 2, "IS_OLD_PEOPLE", true), + IC_SPECIAL("ic_special","特殊人群信息录入表", 8, 3, "IS_SPECIAL", true), + +// 下面的是:没有实际数据库表,在ic_resi_user中有一个标记,但是导入的时候是有单独的sheet的 + IC_DBH("ic_resi_user","低保人员信息录入表", null, 2, "IS_DBH", false), + IC_YLFN("ic_resi_user","育龄妇女信息录入表", null, 2, "IS_YLFN", false), + IC_XFRY("ic_resi_user","信访人员信息录入表", null, 2, "IS_XFRY", false), + IC_KC("ic_resi_user","空巢老人信息录入表", null, 2, "IS_KC", false), + IC_SD("ic_resi_user","失独人员信息录入表", null, 2, "IS_SD", false), + IC_SN("ic_resi_user","失能人员信息录入表", null, 2, "IS_SN", false), + IC_SZ("ic_resi_user","失智人员信息录入表", null, 2, "IS_SZ", false), + IC_CJ("ic_resi_user","残疾人员信息录入表", null, 2, "IS_CJ", false), + IC_DB("ic_resi_user","大病人员信息录入表", null, 2, "IS_DB", false), + IC_MB("ic_resi_user","慢病人员信息录入表", null, 2, "IS_MB", false); private String tableName; + /** + * 表描述 && sheet名称 + */ private String tableComment; - private int sheetNo; + private Integer sheetNo; private int headRowNo; private String mainTableFlagColumnName; + /** + * 该sheet是否有数据库表 + */ + private boolean existsDBTable; /** * 根据表名获取枚举对象 @@ -63,34 +85,18 @@ public enum IcResiUserTableEnum { return tableName; } - public void setTableName(String tableName) { - this.tableName = tableName; - } - public String getTableComment() { return tableComment; } - public void setTableComment(String tableComment) { - this.tableComment = tableComment; - } - public int getSheetNo() { return sheetNo; } - public void setSheetNo(int sheetNo) { - this.sheetNo = sheetNo; - } - public int getHeadRowNo() { return headRowNo; } - public void setHeadRowNo(int headRowNo) { - this.headRowNo = headRowNo; - } - public String getMainTableFlagColumnName() { return mainTableFlagColumnName; } @@ -98,4 +104,8 @@ public enum IcResiUserTableEnum { public void setMainTableFlagColumnName(String mainTableFlagColumnName) { this.mainTableFlagColumnName = mainTableFlagColumnName; } + + public boolean isExistsDBTable() { + return existsDBTable; + } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcResiVirtualSheetImportListener.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcResiVirtualSheetImportListener.java new file mode 100644 index 0000000000..79ddbea5a9 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcResiVirtualSheetImportListener.java @@ -0,0 +1,44 @@ +package com.epmet.excel.handler; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; +import com.epmet.enums.IcResiUserTableEnum; +import com.epmet.service.impl.IcResiUserImportServiceImpl; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public class IcResiVirtualSheetImportListener extends AnalysisEventListener> { + + private IcResiUserImportServiceImpl importService; + + private IcResiUserTableEnum sheetEnumObject; + + /** + * 身份证号列表 + */ + private List> resiInfo = new ArrayList<>(); + + public IcResiVirtualSheetImportListener(IcResiUserImportServiceImpl importService, IcResiUserTableEnum sheetEnumObject) { + this.importService = importService; + this.sheetEnumObject = sheetEnumObject; + } + + @Override + public void invoke(Map data, AnalysisContext context) { + if (data != null && data.size() > 0) { + resiInfo.add(data); + } + } + + @Override + public void doAfterAllAnalysed(AnalysisContext context) { + try { + importService.persistIcResiVirtualSheetExtraInfo(resiInfo, sheetEnumObject); + } finally { + // 清空数据 + resiInfo.clear(); + } + } +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java index 3cbfc6215c..414a077729 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java @@ -12,6 +12,7 @@ import com.epmet.bean.ResiImportResiCategoryChangedCache; import com.epmet.bean.ResiImportChangedData; import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.constant.StrConstant; +import com.epmet.commons.tools.constant.ThreadLocalConstant; import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; import com.epmet.commons.tools.dto.result.OptionResultDTO; import com.epmet.commons.tools.exception.EpmetErrorCode; @@ -39,6 +40,7 @@ import com.epmet.entity.IcUserChangeRecordEntity; import com.epmet.entity.IcUserTransferRecordEntity; import com.epmet.enums.IcResiUserTableEnum; import com.epmet.excel.handler.IcResiImportDynamicExcelListener; +import com.epmet.excel.handler.IcResiVirtualSheetImportListener; import com.epmet.feign.*; import com.epmet.service.*; import com.google.common.cache.Cache; @@ -73,6 +75,11 @@ import java.util.stream.Collectors; @Service public class IcResiUserImportServiceImpl implements IcResiUserImportService, ResultDataResolver { + /** + * 身份证号列序号 + */ + public static final Integer ID_CARD_COLUMN_NO = 9; + // 错误和跳过excel行暂存 public static final ThreadLocal>> errorRows = new ThreadLocal<>(); @@ -200,24 +207,6 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res private String errorInfo; } - @Data - public static class SkipedRow { - - @Excel(name = "工作表") - private String sheetName; - - private String tableName; - - @Excel(name = "身份证号") - private String idCard; - - @Excel(name = "姓名") - private String name; - - @Excel(name = "信息") - private String info; - } - /** * 导入居民信息 * @param importTaskId 导入任务id @@ -245,8 +234,6 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res CustomerAgencyDTO agencyInfo = getResultDataOrThrowsException(govOrgOpenFeignClient.getAgencyById(currUserAgencyId), ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), null, null); String customerId = agencyInfo.getCustomerId(); - boolean hasErrorRows = false; - try { initImportThreadLocal(customerId); @@ -256,12 +243,13 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res // 上传附表信息 for (IcResiUserTableEnum sheet : IcResiUserTableEnum.values()) { + // 是主表 if (sheet == IcResiUserTableEnum.IC_RESI_USER) { continue; } try { - importIcResiExtraInfoFromExcel(formItemList, excelPathName, sheet.getSheetNo(), sheet.getHeadRowNo(), currUserAgencyId, loginUserId, sheet.getTableName(), customerId); + importIcResiExtraInfoFromExcel(formItemList, excelPathName, sheet, currUserAgencyId, loginUserId, customerId); } catch (Exception e) { String errorMsg = ExceptionUtils.getErrorStackTrace(e); log.error("导入IC居民附加信息【{}】错误:{}", sheet.getTableComment(), errorMsg); @@ -339,12 +327,6 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res String operatorId = loginUserUtil.getLoginUserId(); String importTag = operatorId + System.currentTimeMillis(); - // 跳过的,不导入的行 - Map> skipedRowsMap = new LinkedHashMap<>(); - for (IcResiUserTableEnum e : IcResiUserTableEnum.values()) { - skipedRowsMap.put(e.getTableName(), new LinkedList<>()); - } - // 错误信息 Map> errorRowsMap = new LinkedHashMap<>(); for (IcResiUserTableEnum e : IcResiUserTableEnum.values()) { @@ -392,19 +374,35 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res * * @param formItemList * @param excelPathName - * @param sheetNo - * @param headRowNumber + * @param sheetEnumObject sheet枚举对象 * @param currUserAgencyId * @param currentUserId - * @param targetTableName 要插入哪一个表 * @return */ - private void importIcResiExtraInfoFromExcel(List formItemList, String excelPathName, int sheetNo, int headRowNumber, String currUserAgencyId, String currentUserId, - String targetTableName, String customerId) { - - IcResiImportDynamicExcelListener readListener = new IcResiImportDynamicExcelListener(this, customerId, currentUserId, currUserAgencyId, null, - false, targetTableName, formItemList, headRowNumber); - EasyExcelFactory.read(new File(excelPathName)).registerReadListener(readListener).headRowNumber(headRowNumber).sheet(sheetNo).doRead(); + private void importIcResiExtraInfoFromExcel(List formItemList, String excelPathName, IcResiUserTableEnum sheetEnumObject, String currUserAgencyId, + String currentUserId, String customerId) { + + // 如果该sheet对应有实际的数据库表,使用items动态的解析 + if (sheetEnumObject.isExistsDBTable()) { + IcResiImportDynamicExcelListener readListener = new IcResiImportDynamicExcelListener( + this, customerId, currentUserId, currUserAgencyId, null, + false, sheetEnumObject.getTableName(), formItemList, sheetEnumObject.getHeadRowNo()); + + EasyExcelFactory.read(new File(excelPathName)) + .registerReadListener(readListener) + .headRowNumber(sheetEnumObject.getHeadRowNo()) + .sheet(sheetEnumObject.getTableComment()) + .doRead(); + } else { + // 实际上并不存在该sheet对应的数据库表,此时无法使用items解析,就要读取固定的ID_CARD字段数据,更新主表字段为true + IcResiVirtualSheetImportListener vitualSheetReadListener = new IcResiVirtualSheetImportListener(this, sheetEnumObject); + + EasyExcelFactory.read(new File(excelPathName)) + .registerReadListener(vitualSheetReadListener) + .headRowNumber(sheetEnumObject.getHeadRowNo()) + .sheet(sheetEnumObject.getTableComment()) + .doRead(); + } } /** @@ -427,7 +425,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res String idCard = columnAndValues.get("ID_CARD"); - Map existingResiMap = icResiUserDao.selectResiInfoMap(idCard); + Map existingResiMap = icResiUserDao.selectResiInfoMap(idCard, null); if (existingResiMap == null) { // 新导入的居民,因为还没有读取子sheet,所以这些居民类别没有办法获取,先默认设置成0,后面读取子sheet的时候再更新 @@ -439,6 +437,16 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res columnAndValues.put("IS_UNITED_FRONT", "0"); columnAndValues.put("IS_VETERANS", "0"); columnAndValues.put("IS_VOLUNTEER", "0"); + columnAndValues.put("IS_DBH", "0"); + columnAndValues.put("IS_YLFN", "0"); + columnAndValues.put("IS_XFRY", "0"); + columnAndValues.put("IS_KC", "0"); + columnAndValues.put("IS_SD", "0"); + columnAndValues.put("IS_SN", "0"); + columnAndValues.put("IS_SZ", "0"); + columnAndValues.put("IS_CJ", "0"); + columnAndValues.put("IS_DB", "0"); + columnAndValues.put("IS_MB", "0"); } else { // 该居民已存在,要做更新操作,因为还没有读取子sheet,所以这些居民最新类别没有办法获取,先设置上旧的数据 columnAndValues.put("IS_ENSURE_HOUSE", existingResiMap.get("IS_ENSURE_HOUSE")); @@ -449,6 +457,16 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res columnAndValues.put("IS_UNITED_FRONT", existingResiMap.get("IS_UNITED_FRONT")); columnAndValues.put("IS_VETERANS", existingResiMap.get("IS_VETERANS")); columnAndValues.put("IS_VOLUNTEER", existingResiMap.get("IS_VOLUNTEER")); + columnAndValues.put("IS_DBH", existingResiMap.get("IS_DBH")); + columnAndValues.put("IS_YLFN", existingResiMap.get("IS_YLFN")); + columnAndValues.put("IS_XFRY", existingResiMap.get("IS_XFRY")); + columnAndValues.put("IS_KC", existingResiMap.get("IS_KC")); + columnAndValues.put("IS_SD", existingResiMap.get("IS_SD")); + columnAndValues.put("IS_SN", existingResiMap.get("IS_SN")); + columnAndValues.put("IS_SZ", existingResiMap.get("IS_SZ")); + columnAndValues.put("IS_CJ", existingResiMap.get("IS_CJ")); + columnAndValues.put("IS_DB", existingResiMap.get("IS_DB")); + columnAndValues.put("IS_MB", existingResiMap.get("IS_MB")); } columnAndValues.put("AGENCY_ID", currUserAgencyId); @@ -465,12 +483,6 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res ResiImportChangedData transferData; if ((transferData = this.getResiImportTrasferData(existingResiMap, columnAndValues)) != null) { newlyOrChangedResi.get().getTransferedResis().put(existingResiMap.get("ID"), transferData); - } else { - // 组织维度没有发生变化,看是否有居民类型变更 - ResiImportChangedData d = getResiImportCategoryChangedData(existingResiMap, columnAndValues); - if (d != null) { - newlyOrChangedResi.get().getCategoryChangedResis().put(existingResiMap.get("ID"), d); - } } } else { // 新增居民 @@ -478,22 +490,8 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res columnAndValues.put("CREATED_BY", currentUserId); columnAndValues.put("ID", resiId); - icResiUserDao.add(tableName, columnAndValues); - // 过滤出本居民含有哪些类别 - Map resiCategories = resiCategoryColumnNameAndLabel.get().keySet() - .stream() - .filter((categoryColumnName) -> "1".equals(columnAndValues.get(categoryColumnName))) - .collect(Collectors.toMap((k) -> k, (k) -> columnAndValues.get(k))); - -// newlyOrChangedResi.get().getNewResis().put(resiId, -// new ResiImportCategoryData(columnAndValues.get("AGENCY_ID"), -// columnAndValues.get("GRID_ID"), -// columnAndValues.get("VILLAGE_ID"), -// columnAndValues.get("BUILD_ID"), -// columnAndValues.get("UNIT_ID"), -// columnAndValues.get("HOME_ID"), -// resiCategories)); + icResiUserDao.add(tableName, columnAndValues); ResiImportCategoryData categoryData = new ResiImportCategoryData(resiId, columnAndValues.get("AGENCY_ID"), @@ -502,7 +500,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res columnAndValues.get("BUILD_ID"), columnAndValues.get("UNIT_ID"), columnAndValues.get("HOME_ID"), - resiCategories); + new HashMap<>()); redisUtils.hMSet(RedisKeys.icResiImportResiCategoryKey(newlyOrChangedResi.get().getImportTag(), "add", resiId), BeanUtil.beanToMap(categoryData)); categoryData = null; @@ -560,13 +558,13 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res } // 检查用户是否存在 - Map resiInfoMap = icResiUserDao.selectResiInfoMap(idCard); + Map existResiInfoMap = icResiUserDao.selectResiInfoMap(idCard, null); - if (resiInfoMap == null || resiInfoMap.size() == 0) { + if (existResiInfoMap == null || existResiInfoMap.size() == 0) { throw new RenException(EpmetErrorCode.RESI_NOT_FOUND.getCode(), String.format("身份证号为【%s】的居民信息未找到,请确认该居民信息存在", idCard)); } - String icResiId = resiInfoMap.get("ID"); + String icResiId = existResiInfoMap.get("ID"); columnAndValues.put("IC_RESI_USER", icResiId); columnAndValues.put("CUSTOMER_ID", loginUserUtil.getLoginUserCustomerId()); @@ -594,7 +592,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res // 保存到类别变更缓存中 saveSubTableInfoToCategoryChangedResiCache(icResiId, Objects.requireNonNull(IcResiUserTableEnum.getObjectByTableName(targetTableName)).getMainTableFlagColumnName(), - resiInfoMap); + existResiInfoMap); } catch (Exception e) { String errorMsg; @@ -617,6 +615,45 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res } } + /** + * 虚拟(不对应实际的数据库表)sheet的数据导入持久化 + * @param sheetEnumObject + */ + public void persistIcResiVirtualSheetExtraInfo(List> resiInfo, IcResiUserTableEnum sheetEnumObject) { + for (Map columnAndValues : resiInfo) { + String idCard = columnAndValues.get(ID_CARD_COLUMN_NO); + try { + Map resiInfoMap = icResiUserDao.selectResiInfoMap(idCard, null); + + if (resiInfoMap == null || resiInfoMap.size() == 0) { + throw new RenException(EpmetErrorCode.RESI_NOT_FOUND.getCode(), String.format("身份证号为【%s】的居民信息未找到,请确认该居民信息存在", idCard)); + } + String icResiId = resiInfoMap.get("ID"); + + // 更新主表中该居民类型字段为true + updateMainTableResiTypeFlag(sheetEnumObject, icResiId); + + // 保存类别变更信息 + saveSubTableInfoToCategoryChangedResiCache(icResiId, sheetEnumObject.getMainTableFlagColumnName(), resiInfoMap); + } catch (Exception e) { + String errorMsg; + if (e instanceof RenException || e instanceof EpmetException) { + errorMsg = e.getMessage(); + } else { + errorMsg = "未知系统错误"; + log.error(ExceptionUtils.getErrorStackTrace(e)); + } + + ErrorRow errorRow = new ErrorRow(); + errorRow.setName(columnAndValues.get("NAME")); + errorRow.setIdCard(idCard); + errorRow.setErrorInfo(errorMsg); + errorRow.setTableName(sheetEnumObject.getTableName()); + errorRows.get().get(sheetEnumObject.getTableName()).add(errorRow); + } + } + } + /** * 去掉多余的列 * @param originColumnAndValues @@ -1060,7 +1097,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res private void updateMainTableResiTypeFlag(IcResiUserTableEnum icResiUserTableEnum, String resiUserId) { HashMap map = new HashMap<>(); map.put(icResiUserTableEnum.getMainTableFlagColumnName(), true); - icResiUserDao.upTable("ic_resi_user", resiUserId, map); + icResiUserDao.upTable(IcResiUserTableEnum.IC_RESI_USER.getTableName(), resiUserId, map); } /** @@ -1127,93 +1164,6 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res return null; } - HashMap existingResiCategories = new HashMap<>(); - HashMap newResiCategories = new HashMap<>(); - - for (String categoryColumnName : resiCategoryColumnNameAndLabel.get().keySet()) { - String oldCategoryValue = existingResiMap.get(categoryColumnName); - String newCategoryValue = newResiMap.get(categoryColumnName); - - if (StringUtils.isBlank(oldCategoryValue)) oldCategoryValue = "0"; - if (StringUtils.isBlank(newCategoryValue)) newCategoryValue = "0"; - - if ("1".equals(oldCategoryValue) || "1".equals(newCategoryValue)) { - // 新旧值有一个为1,则放入 - existingResiCategories.put(categoryColumnName, oldCategoryValue); - newResiCategories.put(categoryColumnName, newCategoryValue); - } - -// if ("1".equals(oldCategoryValue)) { -// existingResiCategories.put(categoryColumnName, oldCategoryValue); -// } -// -// if ("1".equals(newCategoryValue)) { -// newResiCategories.put(categoryColumnName, newCategoryValue); -// } - } - - ResiImportCategoryData oldOne = new ResiImportCategoryData( - existingResiMap.get("ID"), - existingResiMap.get("AGENCY_ID"), - existingResiMap.get("GRID_ID"), - existingResiMap.get("VILLAGE_ID"), - existingResiMap.get("BUILD_ID"), - existingResiMap.get("UNIT_ID"), - existingResiMap.get("HOME_ID"), - existingResiCategories); - - ResiImportCategoryData newOne = new ResiImportCategoryData( - newResiMap.get("ID"), - newResiMap.get("AGENCY_ID"), - newResiMap.get("GRID_ID"), - newResiMap.get("VILLAGE_ID"), - newResiMap.get("BUILD_ID"), - newResiMap.get("UNIT_ID"), - newResiMap.get("HOME_ID"), - newResiCategories); - - return new ResiImportChangedData(oldOne, newOne); - } - - /** - * 类别变更的居民信息封装。只要发生变化,0或者1都要保存 - * 1. - * @param existingResiMap - * @param newResiMap - * @return - */ - private ResiImportChangedData getResiImportCategoryChangedData(Map existingResiMap, Map newResiMap) { - // 发生变化的类别列明 - HashMap oldCategories = new HashMap<>(); - HashMap newCategories = new HashMap<>(); - - Set categoryColumnNames = resiCategoryColumnNameAndLabel.get().keySet(); - for (String categoryColumnName : categoryColumnNames) { - - String existingColumnValue = existingResiMap.get(categoryColumnName); - String newColumnValue = newResiMap.get(categoryColumnName); - - // 先转为0再对比 - if (StringUtils.isBlank(existingColumnValue)) existingColumnValue = "0"; - if (StringUtils.isBlank(newColumnValue)) newColumnValue = "0"; - - if (!existingColumnValue.equals(newColumnValue)) { - oldCategories.put(categoryColumnName, existingColumnValue); - newCategories.put(categoryColumnName, newColumnValue); - } - -// if (StringUtils.isAllBlank(existingColumnValue, newColumnValue)) { -// // 都为空,则没发生变化 -// continue; -// } else { -// -// } - } - - if (oldCategories.size() == 0) { - return null; - } - ResiImportCategoryData oldOne = new ResiImportCategoryData( existingResiMap.get("ID"), existingResiMap.get("AGENCY_ID"), @@ -1222,7 +1172,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res existingResiMap.get("BUILD_ID"), existingResiMap.get("UNIT_ID"), existingResiMap.get("HOME_ID"), - oldCategories); + new HashMap<>()); ResiImportCategoryData newOne = new ResiImportCategoryData( newResiMap.get("ID"), @@ -1232,7 +1182,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res newResiMap.get("BUILD_ID"), newResiMap.get("UNIT_ID"), newResiMap.get("HOME_ID"), - newCategories); + new HashMap<>()); return new ResiImportChangedData(oldOne, newOne); } @@ -1241,20 +1191,19 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res * * @param icResiId 居民id * @param columnName 该项信息在主表的列名 + * @param existResiInfoMap 已存在的居民信息map */ - private void saveSubTableInfoToCategoryChangedResiCache(String icResiId, String columnName, Map resiInfoMap) { + private void saveSubTableInfoToCategoryChangedResiCache(String icResiId, String columnName, Map existResiInfoMap) { ResiImportResiCategoryChangedCache cc = newlyOrChangedResi.get(); -// Map newResis = cc.getNewResis(); Map categoryChangedResis = cc.getCategoryChangedResis(); Map transferedResis = cc.getTransferedResis(); -// ResiImportCategoryData newResi = newResis.get(icResiId); + // 为新增居民 String userCateRedisKey = RedisKeys.icResiImportResiCategoryKey(newlyOrChangedResi.get().getImportTag(), "add", icResiId); - Map < String, Object > addUserMap = redisUtils.hGetAll(userCateRedisKey); + Map addUserMap = redisUtils.hGetAll(userCateRedisKey); if (addUserMap != null && addUserMap.size() > 0) { - //说明是新增居民 ResiImportCategoryData newResiCateData = ConvertUtils.mapToEntity(addUserMap, ResiImportCategoryData.class); newResiCateData.getCategories().put(columnName, "1"); redisUtils.hMSet(userCateRedisKey, BeanUtil.beanToMap(newResiCateData)); @@ -1262,47 +1211,53 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res return; } - ResiImportChangedData categoryChangedData = categoryChangedResis.get(icResiId); - if (categoryChangedData != null) { - // 说明是类别变更的居民 - Map oldCategories = categoryChangedData.getOldData().getCategories(); - Map newCategories = categoryChangedData.getNewData().getCategories(); - - if ("0".equals(resiInfoMap.get(columnName))) { - oldCategories.put(columnName, "0"); - newCategories.put(columnName, "1"); - } - - return; - } + String oldValue = existResiInfoMap.get(columnName); + // 为发生调动的居民。不管标志相同与否都往里面put ResiImportChangedData transferedData = transferedResis.get(icResiId); if (transferedData != null) { - // 说明是发生调动的居民,新数据值为1 Map newCategories = transferedData.getNewData().getCategories(); Map oldCategories = transferedData.getOldData().getCategories(); - String oldValue = resiInfoMap.get(columnName); - if (StringUtils.isBlank(oldValue)) { - oldValue = "0"; - } - - oldCategories.put(columnName, oldValue); + oldCategories.put(columnName, oldValue); newCategories.put(columnName, "1"); return; } - if ("0".equals(resiInfoMap.get(columnName))) { - // 非新增,非调动,变更的数据不在主sheet中,而在附sheet中。看是否发生人员类型变更(从0->1) - ResiImportCategoryData oldOne = new ResiImportCategoryData(); - ResiImportCategoryData newOne = new ResiImportCategoryData(); + // 类别变更的居民。不管标志相同与否都往里面put + ResiImportChangedData categoryChangedData = categoryChangedResis.get(icResiId); + if (categoryChangedData != null) { + Map oldCategories = categoryChangedData.getOldData().getCategories(); + Map newCategories = categoryChangedData.getNewData().getCategories(); - oldOne.getCategories().put(columnName, "0"); - newOne.getCategories().put(columnName, "1"); + oldCategories.put(columnName, oldValue); + newCategories.put(columnName, "1"); - ResiImportChangedData cd = new ResiImportChangedData(oldOne, newOne); - categoryChangedResis.put(icResiId, cd); + return; } + + // 非新增,非调动,可能是类别变更的,只是主表中没有数据,只有附加表的数据 + ResiImportCategoryData oldOne = new ResiImportCategoryData(); + ResiImportCategoryData newOne = new ResiImportCategoryData(); + + oldOne.setAgencyId(existResiInfoMap.get("AGENCY_ID")); + oldOne.setGridId(existResiInfoMap.get("GRID_ID")); + oldOne.setVillageId(existResiInfoMap.get("VILLAGE_ID")); + oldOne.setBuildId(existResiInfoMap.get("BUILD_ID")); + oldOne.setUnitId(existResiInfoMap.get("UNIT_ID")); + oldOne.setHomeId(existResiInfoMap.get("HOME_ID")); + oldOne.getCategories().put(columnName, oldValue); + + newOne.setAgencyId(existResiInfoMap.get("AGENCY_ID")); + newOne.setGridId(existResiInfoMap.get("GRID_ID")); + newOne.setVillageId(existResiInfoMap.get("VILLAGE_ID")); + newOne.setBuildId(existResiInfoMap.get("BUILD_ID")); + newOne.setUnitId(existResiInfoMap.get("UNIT_ID")); + newOne.setHomeId(existResiInfoMap.get("HOME_ID")); + newOne.getCategories().put(columnName, "1"); + + ResiImportChangedData cd = new ResiImportChangedData(oldOne, newOne); + categoryChangedResis.put(icResiId, cd); } /** @@ -1322,7 +1277,9 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res Map oldCategories = oldData.getCategories(); Map newCategories = newData.getCategories(); - fillResiSubCategoryInfo4TransferAndCategoryChange(oldData, newData); + Map resiInfoMap = icResiUserDao.selectResiInfoMap(null, resiId); + + fillResiSubCategoryInfo4TransferAndCategoryChange(oldData, newData, resiInfoMap); StringBuilder sbBefore = new StringBuilder(""); StringBuilder sbAfter = new StringBuilder(""); @@ -1339,23 +1296,19 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res } // 生成changeRecord并存入 - IcResiUserEntity resiInfo = icResiUserDao.selectById(resiId); - IcUserChangeRecordEntity changeRecord = fillChangeRecord(loginUserUtil.getLoginUserCustomerId(), resiId, resiInfo.getName(), null, loginUserUtil.getLoginUserId(), + IcUserChangeRecordEntity changeRecord = fillChangeRecord(loginUserUtil.getLoginUserCustomerId(), resiId, resiInfoMap.get("NAME"), null, loginUserUtil.getLoginUserId(), operator.getRealName() , descBefore, descAfter, "category", "类别", "", now); icUserChangeRecordDao.insert(changeRecord); for (Map.Entry columnEntry : newCategories.entrySet()) { String newValue = columnEntry.getValue(); String oldValue = oldCategories.get(columnEntry.getKey()); - oldValue = oldValue == null ? "0" : oldValue; if (newValue.equals(oldValue)) { // 新旧值相等,跳过 continue; } - int value = newValue.equals("1") && oldValue.equals("0") ? 1 : -1; - String agencyId = newData.getAgencyId(); String gridId = newData.getGridId(); String villageId = newData.getVillageId(); @@ -1363,17 +1316,9 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res String unitId = newData.getUnitId(); String homeId = newData.getHomeId(); - // 如果只有附加表信息,但是没有主表信息,并且附加表基础信息很多空着的,此处需要从主表获取了然后填充一下该信息 - if (agencyId == null) agencyId = resiInfo.getAgencyId(); - if (gridId == null) gridId = resiInfo.getGridId(); - if (villageId == null) villageId = resiInfo.getVillageId(); - if (buildId == null) buildId = resiInfo.getBuildId(); - if (unitId == null) unitId = resiInfo.getUnitId(); - if (homeId == null) homeId = resiInfo.getHomeId(); - IcUserChangeDetailedEntity newDetail = fillChangeDetail(loginUserUtil.getLoginUserCustomerId(), resiId, changeRecord.getId(), agencyId, gridId, villageId, buildId, unitId, - homeId, "category", "类别", columnEntry.getKey(), value, resiInfo.getPids()); + homeId, "category", "类别", columnEntry.getKey(), 1, resiInfoMap.get("PIDS")); icUserChangeDetailedDao.insert(newDetail); } @@ -1431,10 +1376,10 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res icUserChangeRecordDao.insert(changeRecord); // 插入changeDetail - for (Map.Entry column : newResiInfoObj.getCategories().entrySet()) { + for (Map.Entry mainTableColumn : newResiInfoObj.getCategories().entrySet()) { IcUserChangeDetailedEntity changedetail = fillChangeDetail(loginUserUtil.getLoginUserCustomerId(), newResiInfoObj.getResiId(), changeRecord.getId(), newResiInfoObj.getAgencyId(), newResiInfoObj.getGridId(), newResiInfoObj.getVillageId(), newResiInfoObj.getBuildId(), newResiInfoObj.getUnitId(), - newResiInfoObj.getHomeId(), "add", "新增", column.getKey(), 1, resiInfo.getPids()); + newResiInfoObj.getHomeId(), "add", "新增", mainTableColumn.getKey(), 1, resiInfo.getPids()); icUserChangeDetailedDao.insert(changedetail); changedetail = null; @@ -1457,11 +1402,15 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res for (Map.Entry resi : transferedResis.entrySet()) { String resiId = resi.getKey(); + Map resiInfoMap = icResiUserDao.selectResiInfoMap(null, resiId); + String resiName = resiInfoMap.get("NAME"); + String pids = resiInfoMap.get("PIDS"); + ResiImportCategoryData oldData = resi.getValue().getOldData(); ResiImportCategoryData newData = resi.getValue().getNewData(); // 把附加表的旧数据填充到新数据中 - fillResiSubCategoryInfo4TransferAndCategoryChange(oldData, newData); + fillResiSubCategoryInfo4TransferAndCategoryChange(oldData, newData, resiInfoMap); StringBuilder sbBefore = new StringBuilder(); StringBuilder sbAfter = new StringBuilder(); @@ -1472,7 +1421,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res String oldBuildId = oldData.getBuildId(); String oldUnitId = oldData.getUnitId(); String oldHomeId = oldData.getHomeId(); - // + String newAgencyId = newData.getAgencyId(); String newGridId = newData.getGridId(); String newvillageId = newData.getVillageId(); @@ -1482,22 +1431,22 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res IcResiUserOrgMsgFormDTO oldOrgFormDTO = new IcResiUserOrgMsgFormDTO(); oldOrgFormDTO.setCustomerId(customerId); - oldOrgFormDTO.setAgencyId(oldData.getAgencyId()); - oldOrgFormDTO.setGridId(oldData.getGridId()); - oldOrgFormDTO.setNeighborHoodId(oldData.getVillageId()); - oldOrgFormDTO.setBuildingId(oldData.getBuildId()); - oldOrgFormDTO.setBuildingUnitId(oldData.getUnitId()); - oldOrgFormDTO.setHouseId(oldData.getHomeId()); + oldOrgFormDTO.setAgencyId(oldAgencyId); + oldOrgFormDTO.setGridId(oldGridId); + oldOrgFormDTO.setNeighborHoodId(oldvillageId); + oldOrgFormDTO.setBuildingId(oldBuildId); + oldOrgFormDTO.setBuildingUnitId(oldUnitId); + oldOrgFormDTO.setHouseId(oldHomeId); Result oldOrgInfoRst = govOrgOpenFeignClient.icResiUserOrgMsg(oldOrgFormDTO); IcResiUserOrgMsgFormDTO newOrgInfo = new IcResiUserOrgMsgFormDTO(); newOrgInfo.setCustomerId(customerId); - newOrgInfo.setAgencyId(newData.getAgencyId()); - newOrgInfo.setGridId(newData.getGridId()); - newOrgInfo.setNeighborHoodId(newData.getVillageId()); - newOrgInfo.setBuildingId(newData.getBuildId()); - newOrgInfo.setBuildingUnitId(newData.getUnitId()); - newOrgInfo.setHouseId(newData.getHomeId()); + newOrgInfo.setAgencyId(newAgencyId); + newOrgInfo.setGridId(newGridId); + newOrgInfo.setNeighborHoodId(newvillageId); + newOrgInfo.setBuildingId(newBuildId); + newOrgInfo.setBuildingUnitId(newUnitId); + newOrgInfo.setHouseId(newHomeId); Result newOrgInfoRst = govOrgOpenFeignClient.icResiUserOrgMsg(newOrgInfo); IcResiUserOrgMsgResultDTO oldOrg = null; @@ -1560,16 +1509,14 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res } } - IcResiUserEntity resiInfo = icResiUserDao.selectById(resiId); - // 保存 transferRecord - IcUserTransferRecordEntity transferRecord = fillTransferRecord(resiInfo, operator, customerId, oldAgencyId, oldGridId, - oldvillageId, oldBuildId, oldUnitId, oldHomeId, customerId, + IcUserTransferRecordEntity transferRecord = fillTransferRecord(resiId, resiName, operator, customerId, + oldAgencyId, oldGridId, oldvillageId, oldBuildId, oldUnitId, oldHomeId, customerId, newAgencyId, newGridId, newvillageId, newBuildId, newUnitId, newHomeId, oldOrg, newOrg); icUserTransferRecordDao.insert(transferRecord); // 保存 调动changeRecord - IcUserChangeRecordEntity transferChangeRecord = fillChangeRecord(customerId, resiId, resiInfo.getName(), transferRecord.getId(), operator.getStaffId(), + IcUserChangeRecordEntity transferChangeRecord = fillChangeRecord(customerId, resiId, resiName, transferRecord.getId(), operator.getStaffId(), operator.getRealName(), sbBefore.toString(), sbAfter.toString(), "transfer", "调动", "", now); icUserChangeRecordDao.insert(transferChangeRecord); @@ -1578,17 +1525,14 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res sbAfter = new StringBuilder(); // 过滤居民类别的key并集 - Set bingji = new HashSet<>(); - newData.getCategories().keySet().forEach((k) -> bingji.add(k)); - oldData.getCategories().keySet().forEach((k) -> bingji.add(k)); +// Set bingji = new HashSet<>(); +// newData.getCategories().keySet().forEach((k) -> bingji.add(k)); +// oldData.getCategories().keySet().forEach((k) -> bingji.add(k)); - for (String category : bingji) { + for (String category : newData.getCategories().keySet()) { String newColumnValue = newData.getCategories().get(category); String oldColumnValue = oldData.getCategories().get(category); - if (oldColumnValue == null) oldColumnValue = "0"; - if (newColumnValue == null) newColumnValue = "0"; - if (newColumnValue.equals(oldColumnValue)) { continue; } @@ -1606,7 +1550,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res String categoryDescAfter = sbAfter.toString(); if (!StringUtils.isAllBlank(categoryDescBefore, categoryDescAfter)) { - IcUserChangeRecordEntity categoryChangeRecord = fillChangeRecord(customerId, resiId, resiInfo.getName(), transferRecord.getId(), operator.getStaffId(), + IcUserChangeRecordEntity categoryChangeRecord = fillChangeRecord(customerId, resiId, resiName, transferRecord.getId(), operator.getStaffId(), operator.getRealName(), categoryDescBefore, categoryDescAfter , "category", "类别", "", now); icUserChangeRecordDao.insert(categoryChangeRecord); } @@ -1619,9 +1563,9 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res // 之前是这个类型,那这个类型需要-1 String oldValue = oldCategories.getValue(); if ("1".equals(oldValue)) { - IcUserChangeDetailedEntity changeDetail = fillChangeDetail(customerId, resiId, transferChangeRecord.getId(), oldData.getAgencyId(), - oldData.getGridId(), oldData.getVillageId(), oldData.getBuildId(), oldData.getUnitId(), - oldData.getHomeId(), transferChangeRecord.getType(), transferChangeRecord.getTypeName(), key, -1, resiInfo.getPids()); + IcUserChangeDetailedEntity changeDetail = fillChangeDetail(customerId, resiId, transferChangeRecord.getId(), oldAgencyId, + oldGridId, oldvillageId, oldBuildId, oldUnitId, + oldHomeId, transferChangeRecord.getType(), transferChangeRecord.getTypeName(), key, -1, pids); icUserChangeDetailedDao.insert(changeDetail); } } @@ -1633,9 +1577,9 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res // 现在是这个类型,这个类型要+1 if ("1".equals(newValue)) { - IcUserChangeDetailedEntity changeDetail = fillChangeDetail(customerId, resiId, transferChangeRecord.getId(), newData.getAgencyId(), - newData.getGridId(), newData.getVillageId(), newData.getBuildId(), newData.getUnitId(), - newData.getHomeId(), transferChangeRecord.getType(), transferChangeRecord.getTypeName(), key, 1, resiInfo.getPids()); + IcUserChangeDetailedEntity changeDetail = fillChangeDetail(customerId, resiId, transferChangeRecord.getId(), newAgencyId, + newGridId, newvillageId, newBuildId, newUnitId, + newHomeId, transferChangeRecord.getType(), transferChangeRecord.getTypeName(), key, 1, pids); icUserChangeDetailedDao.insert(changeDetail); } } @@ -1648,18 +1592,43 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res * @param oldData * @param newData */ - private void fillResiSubCategoryInfo4TransferAndCategoryChange(ResiImportCategoryData oldData, ResiImportCategoryData newData) { - for (String category : oldData.getCategories().keySet()) { - String newValue = newData.getCategories().get(category); - String oldValue = oldData.getCategories().get(category); - - // 如果新数据中没有或者是0,并且是附加表信息,并且旧数据是1, 拿旧数据的过来 - if ((newValue == null || "0".equals(newValue)) - && "1".equals(oldValue) - && IcResiUserTableEnum.existsColumn(category)) { - newData.getCategories().put(category, "1"); + private void fillResiSubCategoryInfo4TransferAndCategoryChange(ResiImportCategoryData oldData, ResiImportCategoryData newData, Map resiInfoMap) { + + Map oldCates = oldData.getCategories(); + Map newCates = newData.getCategories(); + + for (IcResiUserTableEnum c : IcResiUserTableEnum.values()) { + // 主表,跳过 + String mainTableColumnName = c.getMainTableFlagColumnName(); + if (mainTableColumnName == null) { + return; + } + + // 不为空,说明本次导入含有该居民的类别信息,不需要补充 + String oldValue = oldCates.get(mainTableColumnName); + if (StringUtils.isNotBlank(oldValue)) { + return; + } + + // 本次导入不含有该居民类别信息,db中存储的数据,如果是1,newValue和oldValue都应该为1 + oldValue = resiInfoMap.get(mainTableColumnName); + if ("1".equals(oldValue)) { + oldCates.put(mainTableColumnName, oldValue); + newCates.put(mainTableColumnName, oldValue); } } + +// for (String category : oldData.getCategories().keySet()) { +// String newValue = newData.getCategories().get(category); +// String oldValue = oldData.getCategories().get(category); +// +// // 如果新数据中没有或者是0,并且是附加表信息,并且旧数据是1, 拿旧数据的过来 +// if ((newValue == null || "0".equals(newValue)) +// && "1".equals(oldValue) +// && IcResiUserTableEnum.existsColumn(category)) { +// newData.getCategories().put(category, "1"); +// } +// } } /** @@ -1739,7 +1708,6 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res /** * 填充调动记录 - * @param resiInfo * @param operator * @param oldCustomerId * @param oldAgencyId @@ -1757,15 +1725,15 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res * @param newHomeId * @return */ - private IcUserTransferRecordEntity fillTransferRecord(IcResiUserEntity resiInfo, CustomerStaffInfoCacheResult operator, String oldCustomerId, String oldAgencyId, String oldGridId, + private IcUserTransferRecordEntity fillTransferRecord(String resiId, String resiName, CustomerStaffInfoCacheResult operator, String oldCustomerId, String oldAgencyId, String oldGridId, String oldVillageId, String oldBuildId, String oldUnitId, String oldHomeId, String newCustomerId, String newAgencyId, String newGridId, String newVillageId, String newBuildId, String newUnitId, String newHomeId, IcResiUserOrgMsgResultDTO oldOrg, IcResiUserOrgMsgResultDTO newOrg) { IcUserTransferRecordEntity recordEntity = new IcUserTransferRecordEntity(); - recordEntity.setIcUserId(resiInfo.getId()); + recordEntity.setIcUserId(resiId); recordEntity.setOperatorId(operator.getStaffId()); - recordEntity.setIcUserName(resiInfo.getName()); + recordEntity.setIcUserName(resiName); recordEntity.setOperatorName(operator.getRealName()); recordEntity.setOldCustomerId(oldCustomerId); recordEntity.setOldAgencyId(oldAgencyId); diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml index 28396dd34e..ff945fede7 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml @@ -552,8 +552,12 @@ From 0c14dfeeca5f58b613720f3a635ad36cb563d09d Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Thu, 3 Mar 2022 11:54:37 +0800 Subject: [PATCH 054/115] =?UTF-8?q?=E8=81=94=E5=BB=BA=E6=B4=BB=E5=8A=A8?= =?UTF-8?q?=E6=97=A7=E6=95=B0=E6=8D=AE=E5=A4=84=E7=90=86=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../V0.0.12__insert_ic_party_relation.sql | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 epmet-module/epmet-heart/epmet-heart-server/src/main/resources/db/migration/V0.0.12__insert_ic_party_relation.sql diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/db/migration/V0.0.12__insert_ic_party_relation.sql b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/db/migration/V0.0.12__insert_ic_party_relation.sql new file mode 100644 index 0000000000..21f856a0ab --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/db/migration/V0.0.12__insert_ic_party_relation.sql @@ -0,0 +1,38 @@ +INSERT INTO ic_activity_unit_relation +SELECT + UUID() AS ID, + CUSTOMER_ID, + AGENCY_ID, + PIDS, + ID AS ACTIVITY_ID, + ACT_ID, + UNIT_ID, + 1 AS SORT, + DEL_FLAG, + REVISION, + CREATED_BY, + CREATED_TIME, + UPDATED_BY, + UPDATED_TIME +FROM + ic_party_activity; +UPDATE ic_activity_unit_relation SET ID = REPLACE (ID, '-', ''); +INSERT INTO ic_activity_service_relation +SELECT + UUID() AS ID, + CUSTOMER_ID, + AGENCY_ID, + PIDS, + ID AS ACTIVITY_ID, + ACT_ID, + SERVICE_MATTER, + 1 AS SORT, + DEL_FLAG, + REVISION, + CREATED_BY, + CREATED_TIME, + UPDATED_BY, + UPDATED_TIME +FROM + ic_party_activity; +UPDATE ic_activity_service_relation SET ID = REPLACE (ID, '-', ''); \ No newline at end of file From a33160a77d9dfc121f9bcdfbcfdda598ac15a4f4 Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Thu, 3 Mar 2022 12:05:25 +0800 Subject: [PATCH 055/115] =?UTF-8?q?=E7=A4=BE=E4=BC=9A=E8=87=AA=E7=BB=84?= =?UTF-8?q?=E7=BB=87=E5=AF=BC=E5=85=A5=20=E5=BF=85=E8=A6=81=E5=88=97?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E4=B8=8D=E8=83=BD=E4=B8=BA=E7=A9=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/excel/ImportCommunitySelfOrganization.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/ImportCommunitySelfOrganization.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/ImportCommunitySelfOrganization.java index 2a9995be2a..e6b04d8938 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/ImportCommunitySelfOrganization.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/ImportCommunitySelfOrganization.java @@ -5,6 +5,7 @@ import cn.afterturn.easypoi.excel.annotation.ExcelCollection; import com.epmet.commons.tools.utils.ExcelVerifyInfo; import lombok.Data; +import javax.validation.constraints.NotBlank; import java.util.Date; import java.util.List; @@ -17,18 +18,23 @@ import java.util.List; public class ImportCommunitySelfOrganization extends ExcelVerifyInfo { @Excel(name = "组织名称", needMerge = true) + @NotBlank(message = "不能为空") private String organizationName; @Excel(name = "组织人数", needMerge = true) + //@NotNull(message = "不能为空") private Integer organizationPersonCount; @Excel(name = "服务事项", needMerge = true) + @NotBlank(message = "不能为空") private String serviceItem; @Excel(name = "负责人", needMerge = true) + @NotBlank(message = "不能为空") private String principalName; @Excel(name = "联系电话", needMerge = true) + @NotBlank(message = "不能为空") private String principalPhone; @Excel(name = "创建时间", needMerge = true) From c265a18ffb7109ce8225034fce5da1860df04dfa Mon Sep 17 00:00:00 2001 From: jianjun Date: Thu, 3 Mar 2022 12:06:58 +0800 Subject: [PATCH 056/115] =?UTF-8?q?=E6=9D=A1=E4=BB=B6=E4=BD=8D=E7=BD=AE?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../extract/FactOriginProjectOrgPeriodDailyDao.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectOrgPeriodDailyDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectOrgPeriodDailyDao.xml index 9515803a6b..c346dda21a 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectOrgPeriodDailyDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectOrgPeriodDailyDao.xml @@ -40,12 +40,12 @@ WHERE DEL_FLAG = '0' AND CUSTOMER_ID = #{customerId} - AND (DATE_FORMAT(INFORMED_DATE,"%Y%m%d") >= #{dateId} OR DATE_FORMAT(HANDLED_DATE,"%Y%m%d") >= #{dateId} OR DATE_FORMAT(PERIOD_TILL_REPLY_FIRSTLY,"%Y%m%d") >= #{dateId}) PROJECT_ID = #{item} + AND (DATE_FORMAT(INFORMED_DATE,"%Y%m%d") >= #{dateId} OR DATE_FORMAT(HANDLED_DATE,"%Y%m%d") >= #{dateId} OR DATE_FORMAT(PERIOD_TILL_REPLY_FIRSTLY,"%Y%m%d") >= #{dateId}) SELECT @@ -141,8 +141,8 @@ GROUP BY fp.ORG_ID - - + + - \ No newline at end of file + From d039e04e8f4e771247f4987096dbfa166e9d6233 Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Thu, 3 Mar 2022 12:27:27 +0800 Subject: [PATCH 057/115] =?UTF-8?q?=E8=81=94=E5=BB=BA=E6=B4=BB=E5=8A=A8?= =?UTF-8?q?=E6=97=A7=E6=95=B0=E6=8D=AE=E5=A4=84=E7=90=86=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../V0.0.12__insert_ic_party_relation.sql | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/db/migration/V0.0.12__insert_ic_party_relation.sql b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/db/migration/V0.0.12__insert_ic_party_relation.sql index 21f856a0ab..41aaf825dd 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/db/migration/V0.0.12__insert_ic_party_relation.sql +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/db/migration/V0.0.12__insert_ic_party_relation.sql @@ -11,11 +11,12 @@ SELECT DEL_FLAG, REVISION, CREATED_BY, - CREATED_TIME, + NOW(), UPDATED_BY, - UPDATED_TIME + NOW() FROM - ic_party_activity; + ic_party_activity +WHERE UNIT_ID IS NOT NULL AND UNIT_ID != ''; UPDATE ic_activity_unit_relation SET ID = REPLACE (ID, '-', ''); INSERT INTO ic_activity_service_relation SELECT @@ -30,9 +31,10 @@ SELECT DEL_FLAG, REVISION, CREATED_BY, - CREATED_TIME, + NOW(), UPDATED_BY, - UPDATED_TIME + NOW() FROM - ic_party_activity; + ic_party_activity +WHERE SERVICE_MATTER IS NOT NULL AND UNIT_ID != ''; UPDATE ic_activity_service_relation SET ID = REPLACE (ID, '-', ''); \ No newline at end of file From 170ad7426fa83516c0e6fc0cd61bd9253cb47fdd Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Thu, 3 Mar 2022 14:57:31 +0800 Subject: [PATCH 058/115] =?UTF-8?q?=E5=90=8D=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/epmet/controller/BuildingController.java | 2 +- .../src/main/java/com/epmet/controller/HouseController.java | 2 +- .../java/com/epmet/controller/IcNeighborHoodController.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/BuildingController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/BuildingController.java index 83165b6c4f..90b9a9353c 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/BuildingController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/BuildingController.java @@ -219,7 +219,7 @@ public class BuildingController { ImportTaskCommonFormDTO importFormDTO = new ImportTaskCommonFormDTO(); importFormDTO.setBizType(ImportTaskConstants.BIZ_TYPE_BUILDING); importFormDTO.setOperatorId(formDTO.getUserId()); - importFormDTO.setOriginFileName(ImportErrorMsgConstants.BUILDING_ERROR_NAME); + importFormDTO.setOriginFileName(file.getOriginalFilename()); Result importTask = epmetCommonServiceOpenFeignClient.createImportTask(importFormDTO); if (!importTask.success()){ throw new EpmetException("当前存在上传任务"); diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java index 976032bd01..71e958364a 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java @@ -269,7 +269,7 @@ public class HouseController implements ResultDataResolver { ImportTaskCommonFormDTO importFormDTO = new ImportTaskCommonFormDTO(); importFormDTO.setBizType(ImportTaskConstants.BIZ_TYPE_HOUSE); importFormDTO.setOperatorId(formDTO.getUserId()); - importFormDTO.setOriginFileName(ImportErrorMsgConstants.HOUSE_ERROR_NAME); + importFormDTO.setOriginFileName(file.getOriginalFilename()); Result importTask = epmetCommonServiceOpenFeignClient.createImportTask(importFormDTO); if (!importTask.success()){ throw new EpmetException("当前存在上传任务"); diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java index fba75d9432..4128ed84c3 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java @@ -139,7 +139,7 @@ public class IcNeighborHoodController { ImportTaskCommonFormDTO importFormDTO = new ImportTaskCommonFormDTO(); importFormDTO.setBizType(ImportTaskConstants.BIZ_TYPE_NEIGHBOR_HOOD); importFormDTO.setOperatorId(formDTO.getUserId()); - importFormDTO.setOriginFileName(ImportErrorMsgConstants.NEIGHBORHOOD_ERROR_NAME); + importFormDTO.setOriginFileName(file.getOriginalFilename()); Result importTask = epmetCommonServiceOpenFeignClient.createImportTask(importFormDTO); if (!importTask.success()){ throw new EpmetException("当前存在上传任务"); From 1593bf6362a47331fbc44c1345075777b267869a Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Thu, 3 Mar 2022 14:57:44 +0800 Subject: [PATCH 059/115] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E7=89=88=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E7=BB=9F=E8=AE=A1=EF=BC=8C=E5=B9=B3=E9=98=B4=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E7=BB=9F=E8=AE=A1=E6=97=B6=E5=8F=AA=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E4=BA=86=E4=BA=94=E4=B8=AA=E8=A1=97=E9=81=93=E7=9A=84=E5=85=B6?= =?UTF-8?q?=E4=BB=96=E4=B8=89=E4=B8=AA=E6=98=AF=E4=B8=8A=E6=8A=A5=E7=9A=84?= =?UTF-8?q?=EF=BC=8C=E7=8E=B0=E5=9C=A8=E8=BF=99=E4=B8=89=E4=B8=AA=E8=A1=97?= =?UTF-8?q?=E9=81=93=E5=9C=A8=E5=B0=8F=E7=A8=8B=E5=BA=8F=E4=B9=9F=E4=BA=A7?= =?UTF-8?q?=E7=94=9F=E4=BA=86=E6=95=B0=E6=8D=AE=E9=9C=80=E8=A6=81=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=E4=B8=8A=EF=BC=8C=E5=9B=A0=E6=AD=A4=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E7=BB=84=E7=BB=87=E7=BD=91=E6=A0=BC=E7=BB=B4?= =?UTF-8?q?=E5=BA=A6=E7=9A=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/dao/org/CustomerGridDao.java | 7 ++++ .../service/impl/StatsProjectServiceImpl.java | 35 ++++++++++++++++--- .../service/org/CustomerGridService.java | 8 +++++ .../org/impl/CustomerGridServiceImpl.java | 10 ++++++ .../resources/mapper/org/CustomerGridDao.xml | 13 +++++++ 5 files changed, 68 insertions(+), 5 deletions(-) diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/org/CustomerGridDao.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/org/CustomerGridDao.java index fc651f6c37..c4f683ca2b 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/org/CustomerGridDao.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/org/CustomerGridDao.java @@ -25,6 +25,7 @@ import com.epmet.dto.org.CustomerStaffGridDTO; import com.epmet.dto.org.GridInfoDTO; import com.epmet.dto.org.form.GridBaseInfoFormDTO; import com.epmet.dto.org.result.CustomerGridDTO; +import com.epmet.dto.stats.DimGridDTO; import com.epmet.dto.user.form.StaffBaseInfoFormDTO; import com.epmet.dto.user.result.GridUserInfoDTO; import com.epmet.entity.org.CustomerGridEntity; @@ -118,4 +119,10 @@ public interface CustomerGridDao extends BaseDao { * @Description 查询工作人员所属网格信息 **/ List getStaffGrid(StaffBaseInfoFormDTO formDTO); + + /** + * @Author sun + * @Description 查询客户下有效网格列表 + **/ + List gridListByCustomerId(@Param("customerId") String customerId); } \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsProjectServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsProjectServiceImpl.java index eb849391a9..852fb8c47d 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsProjectServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsProjectServiceImpl.java @@ -1,17 +1,23 @@ package com.epmet.service.impl; import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.DateUtils; +import com.epmet.constant.PingYinConstant; import com.epmet.constant.ProjectConstant; +import com.epmet.dto.ProjectDTO; import com.epmet.dto.StatsFormDTO; import com.epmet.dto.project.form.MonthProjectListFormDTO; import com.epmet.dto.stats.DimAgencyDTO; +import com.epmet.dto.stats.DimGridDTO; import com.epmet.entity.issue.IssueEntity; +import com.epmet.entity.org.CustomerAgencyEntity; import com.epmet.entity.project.ProjectEntity; import com.epmet.entity.project.ProjectProcessEntity; import com.epmet.entity.stats.*; import com.epmet.service.Issue.IssueService; import com.epmet.service.StatsProjectService; +import com.epmet.service.org.CustomerAgencyService; import com.epmet.service.org.CustomerGridService; import com.epmet.service.project.ProjectProcessService; import com.epmet.service.project.ProjectService; @@ -63,6 +69,8 @@ public class StatsProjectServiceImpl implements StatsProjectService { private FactGridProjectMonthlyService factGridProjectMonthlyService; @Autowired private CustomerGridService customerGridService; + @Autowired + private CustomerAgencyService customerAgencyService; /** * @Author sun @@ -108,10 +116,18 @@ public class StatsProjectServiceImpl implements StatsProjectService { DimIdGenerator.DimIdBean dimId = DimIdGenerator.getDimIdBean(date); //2:根据客户Id查询机关维度表数据 - DimAgencyDTO dimAgencyDTO = new DimAgencyDTO(); - dimAgencyDTO.setCustomerId(customerId); - List dimAgencyList = dimAgencyService.getDimAgencyList(dimAgencyDTO); - + //2022.3.3 平阴数据统计时只统计了五个街道的 其他三个街道是上报的,现在这三个街道在小程序也产生了项目(例行工作)数据, + //但是dim维度表不能有这三个街道的组织,因此改查业务库组织列表数据 start sun + List dimAgencyList = new ArrayList<>(); + if (customerId.equals(PingYinConstant.PROD_PING_YIN_CUSTOMER_ID)) { + List agencyList = customerAgencyService.queryAgencyListByCustomerId(customerId); + dimAgencyList = ConvertUtils.sourceToTarget(agencyList, DimAgencyDTO.class); + } else { + DimAgencyDTO dimAgencyDTO = new DimAgencyDTO(); + dimAgencyDTO.setCustomerId(customerId); + dimAgencyList = dimAgencyService.getDimAgencyList(dimAgencyDTO); + } + //2022.3.3 end sun /* //2022.1.12 客户数据量大 调整计算逻辑,一千条已查询,封装数据,将这部分业务数据查询拿到子方法分页查询处理 sun //3:根据客户Id查询项目业务表已结案数据(查询传入日期及之前的数据) @@ -650,7 +666,16 @@ public class StatsProjectServiceImpl implements StatsProjectService { DimIdGenerator.DimIdBean dimId = DimIdGenerator.getDimIdBean(date); //2:根据客户Id查询网格维度表数据 - List dimGridList = dimGridService.getGridListByCustomerId(customerId); + //2022.3.3 平阴数据统计时只统计了五个街道的 其他三个街道是上报的,现在这三个街道在小程序也产生了项目(例行工作)数据, + //但是dim维度表不能有这三个街道的组织,因此改查业务库网格列表数据 start sun + List dimGridList = new ArrayList<>(); + if (customerId.equals(PingYinConstant.PROD_PING_YIN_CUSTOMER_ID)) { + List gridList = customerGridService.gridListByCustomerId(customerId); + dimGridList = ConvertUtils.sourceToTarget(gridList, DimGridEntity.class); + } else { + dimGridList = dimGridService.getGridListByCustomerId(customerId); + } + //2022.3.3 end sun //3:根据客户Id查询项目业务表已结案数据(查询传入日期及之前的数据) ProjectEntity projectEntity = new ProjectEntity(); diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/CustomerGridService.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/CustomerGridService.java index 5894fafa1b..0dd3fd62a9 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/CustomerGridService.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/CustomerGridService.java @@ -8,9 +8,11 @@ import com.epmet.dto.org.CustomerStaffGridDTO; import com.epmet.dto.org.GridInfoDTO; import com.epmet.dto.org.form.GridBaseInfoFormDTO; import com.epmet.dto.org.result.CustomerGridDTO; +import com.epmet.dto.stats.DimGridDTO; import com.epmet.dto.user.form.StaffBaseInfoFormDTO; import com.epmet.dto.user.result.GridUserInfoDTO; import com.epmet.entity.org.CustomerGridEntity; +import com.epmet.entity.stats.DimGridEntity; import java.util.Date; import java.util.List; @@ -99,4 +101,10 @@ public interface CustomerGridService extends BaseService { * @Description 查询工作人员所属网格信息 **/ List getStaffGrid(StaffBaseInfoFormDTO formDTO); + + /** + * @Author sun + * @Description 查询客户下有效网格列表 + **/ + List gridListByCustomerId(String customerId); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/impl/CustomerGridServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/impl/CustomerGridServiceImpl.java index c9ad658627..10bfbc4fd5 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/impl/CustomerGridServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/impl/CustomerGridServiceImpl.java @@ -12,6 +12,7 @@ import com.epmet.dto.org.CustomerStaffGridDTO; import com.epmet.dto.org.GridInfoDTO; import com.epmet.dto.org.form.GridBaseInfoFormDTO; import com.epmet.dto.org.result.CustomerGridDTO; +import com.epmet.dto.stats.DimGridDTO; import com.epmet.dto.user.form.StaffBaseInfoFormDTO; import com.epmet.dto.user.result.GridUserInfoDTO; import com.epmet.entity.org.CustomerGridEntity; @@ -147,4 +148,13 @@ public class CustomerGridServiceImpl extends BaseServiceImpl gridListByCustomerId(String customerId) { + return customerGridDao.gridListByCustomerId(customerId); + } + } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/org/CustomerGridDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/org/CustomerGridDao.xml index 053c6004b0..adcaf8e50d 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/org/CustomerGridDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/org/CustomerGridDao.xml @@ -185,4 +185,17 @@ + + \ No newline at end of file From 3256f76f3272dc692c3cc6f37e0944eaf21e7d40 Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Thu, 3 Mar 2022 15:21:50 +0800 Subject: [PATCH 060/115] =?UTF-8?q?=E5=B1=85=E6=B0=91=E7=AB=AF=E6=B4=BB?= =?UTF-8?q?=E5=8A=A8=E8=AF=A6=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../result/resi/ResiActDetailResultDTO.java | 4 ++ .../service/impl/ActInfoServiceImpl.java | 39 +++++++++++++------ 2 files changed, 31 insertions(+), 12 deletions(-) diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiActDetailResultDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiActDetailResultDTO.java index a232ebdf33..aa33f41e69 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiActDetailResultDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiActDetailResultDTO.java @@ -186,6 +186,8 @@ public class ResiActDetailResultDTO implements Serializable { */ private String unitId; private String unitName; + private List unitIdList; + private List unitNameList; /** * 活动目标 */ @@ -196,4 +198,6 @@ public class ResiActDetailResultDTO implements Serializable { */ private String serviceMatter; private String serviceMatterName; + private List serviceMatterList; + private List serviceMatterNameList; } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/ActInfoServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/ActInfoServiceImpl.java index e595bdd0c6..407cb74dac 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/ActInfoServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/ActInfoServiceImpl.java @@ -22,7 +22,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.commons.tools.constant.NumConstant; -import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.page.PageData; @@ -34,6 +33,7 @@ import com.epmet.dao.ActInfoDao; import com.epmet.dao.ActUserRelationDao; import com.epmet.dao.HeartUserInfoDao; import com.epmet.dto.ActInfoDTO; +import com.epmet.dto.IcPartyActivityDTO; import com.epmet.dto.IcPartyUnitDTO; import com.epmet.dto.form.resi.*; import com.epmet.dto.result.demand.OptionDTO; @@ -42,7 +42,6 @@ import com.epmet.entity.ActInfoEntity; import com.epmet.entity.ActUserRelationEntity; import com.epmet.service.*; import com.epmet.utils.CaculateDistance; -import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -77,6 +76,12 @@ public class ActInfoServiceImpl extends BaseServiceImpl page(Map params) { @@ -255,16 +260,26 @@ public class ActInfoServiceImpl extends BaseServiceImpl serviceItemList=icServiceItemDictService.queryDictList(tokenDto.getCustomerId()); - Map categoryMap=serviceItemList.stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel)); - detailResultDTO.setServiceMatterName(MapUtils.isNotEmpty(categoryMap) && categoryMap.containsKey(detailResultDTO.getServiceMatter()) ? categoryMap.get(detailResultDTO.getServiceMatter()) : StrConstant.EPMETY_STR); - } - if (StringUtils.isNotBlank(detailResultDTO.getUnitId())) { - //获取单位名称 - IcPartyUnitDTO unitDTO = icPartyUnitService.get(detailResultDTO.getUnitId()); - detailResultDTO.setUnitName(null != unitDTO ? unitDTO.getUnitName() : StrConstant.EPMETY_STR); + if (ActConstant.PARTY.equals(detailResultDTO.getActType())) { + IcPartyActivityDTO dto = icPartyActivityService.getActivityByActId(formDto.getActId()); + if (null != dto) { + //获取服务事项 + List serviceItemList = icServiceItemDictService.queryDictList(tokenDto.getCustomerId()); + Map categoryMap = serviceItemList.stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel)); + List services = icActivityServiceRelationService.getServiceList(dto.getId()); + List serviceNames = services.stream().map(categoryMap::get).collect(Collectors.toList()); + detailResultDTO.setServiceMatterList(services); + detailResultDTO.setServiceMatterNameList(serviceNames); + + //获取联建单位 + IcPartyUnitDTO unitDTO = new IcPartyUnitDTO(); + unitDTO.setAgencyId(dto.getAgencyId()); + Map option = icPartyUnitService.option(unitDTO).stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel)); + List unitIds = icActivityUnitRelationService.getUnitList(dto.getId()); + List unitNames = unitIds.stream().map(option::get).collect(Collectors.toList()); + detailResultDTO.setUnitIdList(unitIds); + detailResultDTO.setUnitNameList(unitNames); + } } return new Result().ok(detailResultDTO); } From b340125289155818613cb0bafa4624af54d25574 Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Thu, 3 Mar 2022 15:30:08 +0800 Subject: [PATCH 061/115] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/db/migration/V0.0.13__ImportTaskCommentModify.sql | 1 + 1 file changed, 1 insertion(+) create mode 100644 epmet-module/epmet-common-service/common-service-server/src/main/resources/db/migration/V0.0.13__ImportTaskCommentModify.sql diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/resources/db/migration/V0.0.13__ImportTaskCommentModify.sql b/epmet-module/epmet-common-service/common-service-server/src/main/resources/db/migration/V0.0.13__ImportTaskCommentModify.sql new file mode 100644 index 0000000000..de7c4f70a0 --- /dev/null +++ b/epmet-module/epmet-common-service/common-service-server/src/main/resources/db/migration/V0.0.13__ImportTaskCommentModify.sql @@ -0,0 +1 @@ +alter table import_task modify column PROCESS_STATUS varchar(32) comment '处理状态。processing:处理中;finished_success:成功;finished_fail:未完全成功' \ No newline at end of file From 34af77d0c6e501f79b08d403c89b2dea0bc77da5 Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Thu, 3 Mar 2022 15:45:29 +0800 Subject: [PATCH 062/115] =?UTF-8?q?=E6=8F=90=E7=A4=BA=E8=AF=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/epmet/controller/BuildingController.java | 2 +- .../src/main/java/com/epmet/controller/HouseController.java | 2 +- .../java/com/epmet/controller/IcNeighborHoodController.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/BuildingController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/BuildingController.java index 90b9a9353c..ff7fc61202 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/BuildingController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/BuildingController.java @@ -222,7 +222,7 @@ public class BuildingController { importFormDTO.setOriginFileName(file.getOriginalFilename()); Result importTask = epmetCommonServiceOpenFeignClient.createImportTask(importFormDTO); if (!importTask.success()){ - throw new EpmetException("当前存在上传任务"); + throw new EpmetException("存在进行中的导入"); } buildingService.buildingImportExcel(formDTO,file,importTask); return new Result(); diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java index 71e958364a..a56a6c0a18 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java @@ -272,7 +272,7 @@ public class HouseController implements ResultDataResolver { importFormDTO.setOriginFileName(file.getOriginalFilename()); Result importTask = epmetCommonServiceOpenFeignClient.createImportTask(importFormDTO); if (!importTask.success()){ - throw new EpmetException("当前存在上传任务"); + throw new EpmetException("存在进行中的导入"); } houseService.dispose(file,formDTO,importTask); return new Result<>(); diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java index 4128ed84c3..7fe67264a5 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java @@ -142,7 +142,7 @@ public class IcNeighborHoodController { importFormDTO.setOriginFileName(file.getOriginalFilename()); Result importTask = epmetCommonServiceOpenFeignClient.createImportTask(importFormDTO); if (!importTask.success()){ - throw new EpmetException("当前存在上传任务"); + throw new EpmetException("存在进行中的导入"); } icNeighborHoodService.neighborhoodImport(formDTO,file,importTask); return new Result(); From 706b91ee3190f89a24e0672a7baff752f20c1cc2 Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Thu, 3 Mar 2022 15:46:20 +0800 Subject: [PATCH 063/115] =?UTF-8?q?=E5=AF=BC=E5=85=A5=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E5=88=9B=E5=BB=BA-=E4=BF=AE=E6=94=B9=E8=BF=9B=E8=A1=8C?= =?UTF-8?q?=E4=B8=AD=E7=9A=84=E5=AF=BC=E5=85=A5=E7=9A=84=E6=8F=90=E7=A4=BA?= =?UTF-8?q?=E8=AF=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/service/impl/ImportTaskServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java index f5b0e9eb14..82d6f895b0 100644 --- a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java +++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java @@ -71,8 +71,8 @@ public class ImportTaskServiceImpl implements ImportTaskService { public String createProcessTask(String operatorId, String bizType, String originFileName) { if (existsProcessingTask(operatorId, bizType)) { throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), - "已存在执行中的导入任务,请等待执行完成。", - "已存在执行中的导入任务,请等待执行完成。"); + "存在进行中的导入", + "存在进行中的导入"); } ImportTaskEntity importRecord = new ImportTaskEntity(); From a5602afed217e1b1d199272e898cc6617a429014 Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Thu, 3 Mar 2022 15:53:47 +0800 Subject: [PATCH 064/115] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E7=89=88=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E7=BB=9F=E8=AE=A1=EF=BC=8C=E5=B9=B3=E9=98=B4=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E7=BB=9F=E8=AE=A1=E6=97=B6=E5=8F=AA=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E4=BA=86=E4=BA=94=E4=B8=AA=E8=A1=97=E9=81=93=E7=9A=84=E5=85=B6?= =?UTF-8?q?=E4=BB=96=E4=B8=89=E4=B8=AA=E6=98=AF=E4=B8=8A=E6=8A=A5=E7=9A=84?= =?UTF-8?q?=EF=BC=8C=E7=8E=B0=E5=9C=A8=E8=BF=99=E4=B8=89=E4=B8=AA=E8=A1=97?= =?UTF-8?q?=E9=81=93=E5=9C=A8=E5=B0=8F=E7=A8=8B=E5=BA=8F=E4=B9=9F=E4=BA=A7?= =?UTF-8?q?=E7=94=9F=E4=BA=86=E6=95=B0=E6=8D=AE=E9=9C=80=E8=A6=81=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=E4=B8=8A=EF=BC=8C=E5=9B=A0=E6=AD=A4=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E7=BB=84=E7=BB=87=E7=BD=91=E6=A0=BC=E7=BB=B4?= =?UTF-8?q?=E5=BA=A6=E7=9A=84=E9=80=BB=E8=BE=91=20=20=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E7=9A=84=E6=97=B6=E5=80=99=E5=B9=B3=E9=98=B4=E7=9A=84=E5=90=8C?= =?UTF-8?q?=E4=B8=80=E5=A4=A9=E7=BB=9F=E4=B8=80=E7=BB=84=E7=BB=87=E5=B0=B1?= =?UTF-8?q?=E4=BC=9A=E5=AD=98=E5=9C=A8=E4=B8=A4=E6=9D=A1=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E4=BA=86=20=E5=B0=B1=E9=9C=80=E8=A6=81sum=E5=92=8C=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/datastats/DatsStatsDao.xml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml index be3c501bf3..2ada01f382 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml @@ -1004,7 +1004,8 @@ FROM ( SELECT DISTINCT - date_id dateId, project_total projectCount, closed_total closedProjectCount + + date_id dateId, SUM(project_total) projectCount, SUM(closed_total) closedProjectCount , agency_id orgId @@ -1028,6 +1029,7 @@ AND date_id #{endTime} + GROUP BY date_id, agency_id ORDER BY date_id ASC @@ -1035,6 +1037,7 @@ AND date_id =]]> #{startTime} AND date_id #{endTime} + GROUP BY date_id, agency_id ORDER BY date_id DESC From 7af68bb9f8082044072ffc72bf95306201653e39 Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Thu, 3 Mar 2022 16:57:48 +0800 Subject: [PATCH 065/115] =?UTF-8?q?=E5=B9=B3=E9=98=B4=E7=BB=84=E7=BB=87?= =?UTF-8?q?=E7=BD=91=E6=A0=BC=E9=A1=B9=E7=9B=AE=E7=BB=9F=E8=AE=A1=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E5=BC=95=E8=B5=B7=E7=9A=84=E6=9F=A5=E8=AF=A2=E8=B0=83?= =?UTF-8?q?=E6=95=B4=EF=BC=8C=E4=B8=89=E4=B8=AA=E8=A1=97=E9=81=93=E7=9A=84?= =?UTF-8?q?=E5=90=8C=E4=B8=80=E7=BB=84=E7=BB=87=E6=88=96=E7=BD=91=E6=A0=BC?= =?UTF-8?q?=E4=B8=80=E5=A4=A9=E4=BC=9A=E5=AD=98=E5=9C=A8=E4=B8=A4=E6=9D=A1?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E6=95=B0=E6=8D=AE=20=E5=8F=AA=E6=98=AF?= =?UTF-8?q?=E5=AE=A2=E6=88=B7Id=E4=B8=8D=E5=90=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/datastats/DatsStatsDao.xml | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml index 2ada01f382..26f74c4124 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml @@ -331,17 +331,19 @@ @@ -349,17 +351,19 @@ From 7c2b57fa25cbf6d288576481aa6f6e250beb4bf8 Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Fri, 4 Mar 2022 09:06:48 +0800 Subject: [PATCH 066/115] =?UTF-8?q?=E6=A5=BC=E6=A0=8B=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=9B=B4=E6=96=B0=E6=88=B7=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UpdateBuildingHouseNumResultDTO.java | 21 ++++++++++ .../epmet/controller/BuildingController.java | 2 +- .../com/epmet/controller/HouseController.java | 2 +- .../controller/IcNeighborHoodController.java | 3 +- .../java/com/epmet/dao/IcBuildingDao.java | 25 ++++++++++++ .../epmet/model/ImportHouseInfoListener.java | 7 ++++ .../main/resources/mapper/IcBuildingDao.xml | 38 +++++++++++++++++++ 7 files changed, 95 insertions(+), 3 deletions(-) create mode 100644 epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/UpdateBuildingHouseNumResultDTO.java diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/UpdateBuildingHouseNumResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/UpdateBuildingHouseNumResultDTO.java new file mode 100644 index 0000000000..0a3d25f464 --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/UpdateBuildingHouseNumResultDTO.java @@ -0,0 +1,21 @@ +package com.epmet.dto.result; + +import com.epmet.commons.tools.constant.NumConstant; +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2022/3/3 5:24 下午 + * @DESC + */ +@Data +public class UpdateBuildingHouseNumResultDTO implements Serializable { + + private static final long serialVersionUID = 4350166505117596584L; + + private String id; + + private Integer num; +} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/BuildingController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/BuildingController.java index ff7fc61202..349df657f4 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/BuildingController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/BuildingController.java @@ -222,7 +222,7 @@ public class BuildingController { importFormDTO.setOriginFileName(file.getOriginalFilename()); Result importTask = epmetCommonServiceOpenFeignClient.createImportTask(importFormDTO); if (!importTask.success()){ - throw new EpmetException("存在进行中的导入"); + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"","存在进行中的导入"); } buildingService.buildingImportExcel(formDTO,file,importTask); return new Result(); diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java index a56a6c0a18..ea54959b86 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java @@ -272,7 +272,7 @@ public class HouseController implements ResultDataResolver { importFormDTO.setOriginFileName(file.getOriginalFilename()); Result importTask = epmetCommonServiceOpenFeignClient.createImportTask(importFormDTO); if (!importTask.success()){ - throw new EpmetException("存在进行中的导入"); + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"","存在进行中的导入"); } houseService.dispose(file,formDTO,importTask); return new Result<>(); diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java index 7fe67264a5..24c741ba51 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java @@ -19,6 +19,7 @@ package com.epmet.controller; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.dto.result.OptionResultDTO; +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; @@ -142,7 +143,7 @@ public class IcNeighborHoodController { importFormDTO.setOriginFileName(file.getOriginalFilename()); Result importTask = epmetCommonServiceOpenFeignClient.createImportTask(importFormDTO); if (!importTask.success()){ - throw new EpmetException("存在进行中的导入"); + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"","存在进行中的导入"); } icNeighborHoodService.neighborhoodImport(formDTO,file,importTask); return new Result(); diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcBuildingDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcBuildingDao.java index cc052eed19..87ee60fcd4 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcBuildingDao.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcBuildingDao.java @@ -22,6 +22,7 @@ import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.dto.ImportGeneralDTO; import com.epmet.dto.result.BaseInfoFamilyBuildingResultDTO; import com.epmet.dto.result.BuildingResultDTO; +import com.epmet.dto.result.UpdateBuildingHouseNumResultDTO; import com.epmet.entity.CustomerAgencyEntity; import com.epmet.entity.IcBuildingEntity; import com.epmet.entity.IcHouseEntity; @@ -162,4 +163,28 @@ public interface IcBuildingDao extends BaseDao { */ List selectExistHouse(@Param("ids")List ids); + /** + * Desc: 查询客户下户数为空的 + * @param customerId + * @author zxc + * @date 2022/3/3 5:20 下午 + */ + List selectHouseTotalIsNull(@Param("customerId")String customerId); + + /** + * Desc: 查询楼栋下的户数 + * @param ids + * @author zxc + * @date 2022/3/3 5:26 下午 + */ + List selectHouseNum(@Param("ids")List ids); + + /** + * Desc: 批量更新楼栋户数 + * @param nums + * @author zxc + * @date 2022/3/3 5:31 下午 + */ + void allUpdateHouseNum(@Param("nums") List nums); + } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java index a70f6a465e..e197847286 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java @@ -16,6 +16,7 @@ import com.epmet.dto.ImportGeneralDTO; import com.epmet.dto.form.ImportInfoFormDTO; import com.epmet.dto.form.ImportTaskCommonFormDTO; import com.epmet.dto.result.ImportResultDTO; +import com.epmet.dto.result.UpdateBuildingHouseNumResultDTO; import com.epmet.entity.IcHouseEntity; import com.epmet.enums.HousePurposeEnums; import com.epmet.enums.HouseRentFlagEnums; @@ -450,6 +451,12 @@ public class ImportHouseInfoListener extends AnalysisEventListener list = icBuildingDao.selectHouseTotalIsNull(formDTO.getCustomerId()); + if (!CollectionUtils.isEmpty(list)){ + List houseNum = icBuildingDao.selectHouseNum(list); + icBuildingDao.allUpdateHouseNum(houseNum); + } // 删除缓存 icHouseRedis.delTemporaryCacheGrids(formDTO.getCustomerId(), formDTO.getUserId()); icHouseRedis.delTemporaryCacheNeighBorHood(formDTO.getCustomerId(), formDTO.getUserId()); diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcBuildingDao.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcBuildingDao.xml index ee64e59aca..c2482d86af 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcBuildingDao.xml +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcBuildingDao.xml @@ -25,6 +25,23 @@ + + + UPDATE ic_building + set + TOTAL_HOUSE_NUM = CASE + + when id = #{n.id} then #{n.num} + end, + UPDATED_TIME = NOW() + WHERE DEL_FLAG = '0' + AND id in( + + #{n.id} + + ) + + + + + + + From 9cd3023ef6a51d986ce7d123159a0de2600e3cea Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Fri, 4 Mar 2022 09:41:17 +0800 Subject: [PATCH 067/115] temp --- .../tools/constant/DingDingRobotConstant.java | 11 ++ .../tools/utils/HttpClientManager.java | 1 + .../data-aggregator-server/pom.xml | 6 + .../controller/GovOrgController.java | 12 +- .../dataaggre/excel/GridLivelyExcel.java | 19 +++- .../service/govorg/GovOrgService.java | 6 + .../govorg/impl/GovOrgServiceImpl.java | 106 ++++++++++++++++++ 7 files changed, 159 insertions(+), 2 deletions(-) create mode 100644 epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/DingDingRobotConstant.java diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/DingDingRobotConstant.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/DingDingRobotConstant.java new file mode 100644 index 0000000000..e4c3bd0467 --- /dev/null +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/DingDingRobotConstant.java @@ -0,0 +1,11 @@ +package com.epmet.commons.tools.constant; + +public interface DingDingRobotConstant { + String YZM_TEST_URL="https://oapi.dingtalk.com/robot/send?access_token=249c5f49006cf14b37f9c3bc502ede34c16926a5ac5a0deeb9c9b4be735c0daf"; + String YZM_TEST_SECRET="SECa03f447d67c62d924b5ae52dd9a7ddd9147d32c1d43f8cb43449f505444bdc6b"; + /** + * EPMET V3 产品研发 + */ + String V3_ROBOT_URL="https://oapi.dingtalk.com/robot/send?access_token=75e9ab857536f3018baa09009646876edbd263d07521a1a22eedfc3852623614"; + String V3_ROBOT_SECRET="SECdc8d3fb6780faa919f38fd43783f76d111255036c3b5bdcbc086dff023ee84d5"; +} diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/HttpClientManager.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/HttpClientManager.java index 048745cfb6..ce4b79cb1e 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/HttpClientManager.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/HttpClientManager.java @@ -305,6 +305,7 @@ public class HttpClientManager { */ public Result sendAlarmMsg(String content) { Long timestamp = System.currentTimeMillis(); + //生产环境报警群:重要消息通知 String url = "https://oapi.dingtalk.com/robot/send?access_token=c40055ed85e45fdaafea00f3218928794262ff15163e09ad5c89764433b69806"; String secret = "SEC220eafdcb39ab5dd6cffa9f11b0e5de7178ddac9812d40fdceb6b1dda2963186"; diff --git a/epmet-module/data-aggregator/data-aggregator-server/pom.xml b/epmet-module/data-aggregator/data-aggregator-server/pom.xml index f05b85d745..51d95b3aa9 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/pom.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/pom.xml @@ -110,6 +110,12 @@ --> + + com.epmet + epmet-oss-client + 2.0.0 + compile + diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovOrgController.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovOrgController.java index a0f7bafdbb..c1b2b0e98a 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovOrgController.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovOrgController.java @@ -27,7 +27,6 @@ import com.epmet.dataaggre.entity.govorg.CustomerAgencyEntity; import com.epmet.dataaggre.enums.GridMemberDataAnalysisEnums; import com.epmet.dataaggre.service.AggreGridService; import com.epmet.dataaggre.service.govorg.GovOrgService; -import com.epmet.dto.form.patrol.PcworkRecordListFormDTO; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; @@ -402,4 +401,15 @@ public class GovOrgController { govOrgService.grdiLivelyExport(response, formDTO); } + /** + * 定时任务调用本方法,查询网格活跃度统计结果,生成excel,上传oss.发送钉钉excel. + * @param formDTO + * @return + */ + @PostMapping("export-send-msg") + public Result pcworkRecordListExportSendMsg(@RequestBody GridLivelyFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO, GridLivelyFormDTO.Grid.class); + govOrgService.pcworkRecordListExportSendMsg(formDTO); + return new Result(); + } } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/excel/GridLivelyExcel.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/excel/GridLivelyExcel.java index 655675326f..331511dbe6 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/excel/GridLivelyExcel.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/excel/GridLivelyExcel.java @@ -29,40 +29,57 @@ import lombok.Data; */ @Data public class GridLivelyExcel { - @ExcelProperty("组织ID") @ExcelIgnore private String agencyId; //组织名称 + @Excel(name = "组织名称",width = 15) @ExcelProperty("组织名称") @ColumnWidth(15) private String agencyName; + //组织下所有网格总数 + @Excel(name = "网格总数",width = 15) @ExcelProperty("网格总数") @ColumnWidth(15) private Integer gridSumNum; + //活跃网格数 + @Excel(name = "活跃网格数",width = 15) @ExcelProperty("活跃网格数") @ColumnWidth(15) private Integer gridLivelyNum; + + //活跃网格数占比 + @Excel(name = "活跃网格数占比",width = 15) @ExcelProperty("活跃网格数占比") @ColumnWidth(15) private String gridLivelyRatio; + //正常运行网格数 + @Excel(name = "正常运行网格数",width = 15) @ExcelProperty("正常运行网格数") @ColumnWidth(15) private Integer gridOrdinaryNum; + + //正常运行网格数占比 + @Excel(name = "正常运行网格数占比",width = 15) @ExcelProperty("正常运行网格数占比") @ColumnWidth(15) private String gridOrdinaryRatio; + //僵尸网格数 + @Excel(name = "僵尸网格数",width = 15) @ExcelProperty("僵尸网格数") @ColumnWidth(15) private Integer gridLazyNum; + + //僵尸网格数占比 + @Excel(name = "僵尸网格数占比",width = 15) @ExcelProperty("僵尸网格数占比") @ColumnWidth(15) private String gridLazyRatio; diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgService.java index d81af9c6f7..51d938bb2e 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgService.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgService.java @@ -182,4 +182,10 @@ public interface GovOrgService { * @Description 查询组织的直属下级组织下网格活跃度统计--文件导出 **/ void grdiLivelyExport(HttpServletResponse response, GridLivelyFormDTO formDTO); + + /** + * @Author sun + * @Description 查询组织的直属下级组织下网格活跃度统计--文件导出 + **/ + void pcworkRecordListExportSendMsg(GridLivelyFormDTO formDTO); } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java index 4fc3cb4f81..bb8756f80c 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java @@ -1,18 +1,26 @@ package com.epmet.dataaggre.service.govorg.impl; +import cn.afterturn.easypoi.excel.ExcelExportUtil; +import cn.afterturn.easypoi.excel.entity.ExportParams; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.fastjson.JSON; +import com.dingtalk.api.request.OapiRobotSendRequest; import com.epmet.commons.dynamic.datasource.annotation.DataSource; +import com.epmet.commons.tools.constant.DingDingRobotConstant; 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.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.ExceptionUtils; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.ExcelUtils; +import com.epmet.commons.tools.utils.HttpClientManager; +import com.epmet.commons.tools.utils.Result; import com.epmet.dataaggre.constant.DataSourceConstant; import com.epmet.dataaggre.dao.govorg.*; import com.epmet.dataaggre.dto.epmetuser.result.ListStaffResultDTO; @@ -28,13 +36,23 @@ import com.epmet.dataaggre.service.datastats.DataStatsService; import com.epmet.dataaggre.service.epmetuser.EpmetUserService; import com.epmet.dataaggre.service.govorg.GovOrgService; import com.epmet.dataaggre.service.opercrm.CustomerRelation; +import com.epmet.dto.result.UploadImgResultDTO; +import com.epmet.feign.OssFeignClient; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.fileupload.FileItem; +import org.apache.commons.fileupload.FileItemFactory; +import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.lang3.StringUtils; +import org.apache.http.entity.ContentType; +import org.apache.poi.ss.usermodel.Workbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.web.multipart.commons.CommonsMultipartFile; import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.OutputStream; import java.text.NumberFormat; import java.text.SimpleDateFormat; import java.util.*; @@ -67,6 +85,8 @@ public class GovOrgServiceImpl implements GovOrgService { private EpmetUserService epmetUserService; @Autowired private DataStatsService dataStatsService; + @Autowired + private OssFeignClient ossFeignClient; /** * @param staffId @@ -690,4 +710,90 @@ public class GovOrgServiceImpl implements GovOrgService { return name.toString(); } + /** + * @Author sun + * @Description 查询组织的直属下级组织下网格活跃度统计--文件导出 + **/ + @Override + public void pcworkRecordListExportSendMsg(GridLivelyFormDTO formDTO) { + List data = ConvertUtils.sourceToTarget(grdiLively(formDTO), GridLivelyExcel.class); + if(CollectionUtils.isEmpty(data)){ + log.warn(String.format("网格员活跃度统计数据查询为空,入参【%s】", JSON.toJSONString(formDTO))); + return; + } + ExportParams exportParams = new ExportParams(); + String sheetName = excelSheetName(formDTO); + exportParams.setSheetName(sheetName); + Workbook workbook = ExcelExportUtil.exportExcel(exportParams, + GridLivelyExcel.class, data); + + // 文件名 + String resultDescFileName = sheetName.concat(".xls"); + + FileItemFactory factory = new DiskFileItemFactory(16, null); + FileItem fileItem = factory.createItem("file", ContentType.APPLICATION_OCTET_STREAM.toString(), true, resultDescFileName); + OutputStream os = null; + Result uploadResult = null; + try { + os = fileItem.getOutputStream(); + workbook.write(os); + uploadResult = ossFeignClient.uploadImportTaskDescFile(new CommonsMultipartFile(fileItem)); + } catch (Exception e) { + String errormsg = ExceptionUtils.getErrorStackTrace(e); + log.warn("【网格活跃度统计】上传错误描述文件异常:{}", errormsg); + } finally { + try { + os.close(); + } catch (IOException e) { + String errormsg = ExceptionUtils.getErrorStackTrace(e); + log.warn("【网格活跃度统计】上传错误描述文件关闭输出流:{}", errormsg); + } + try { + fileItem.delete(); + } catch (Exception e) { + String errormsg = ExceptionUtils.getErrorStackTrace(e); + log.warn("【网格活跃度统计】上传错误描述文件删除临时文件:{}", errormsg); + } + } + log.warn(String.format("网格员活跃度统计数据查询为空,返参【%s】", JSON.toJSONString(uploadResult))); + if (uploadResult == null || !uploadResult.success()) { + log.warn("【网格活跃度统计】调用OSS上传结果描述文件失败"); + } else { + //EPMETV3群机器人 + // String secret = DingDingRobotConstant.V3_ROBOT_SECRET; + // String url = DingDingRobotConstant.V3_ROBOT_URL; + String secret = DingDingRobotConstant.YZM_TEST_SECRET; + String url = DingDingRobotConstant.YZM_TEST_URL; + + OapiRobotSendRequest request = new OapiRobotSendRequest(); + //MarkDown方式发送 + request.setMsgtype("markdown"); + OapiRobotSendRequest.Markdown markdown = new OapiRobotSendRequest.Markdown(); + markdown.setTitle("网格活跃度统计"); + markdown.setText("网格活跃度统计: \n" + + "> 起止时间: " + formDTO.getStartTime().concat(StrConstant.UNDER_LINE).concat(formDTO.getEndTime()) + "\n\n" + + "> 文件下载地址: " + uploadResult.getData().getUrl() + "\n\n"); + request.setMarkdown(markdown); + + //小雷哥手机号:18660295251 + OapiRobotSendRequest.At at = new OapiRobotSendRequest.At(); + at.setAtMobiles(Arrays.asList("15764229697")); + at.setIsAtAll(true); + request.setAt(at); + + /*//文本方式发送 + request.setMsgtype("text"); + OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text(); + text.setContent("网格活跃度统计: \n" + + "起止时间: " + formDTO.getStartTime().concat(StrConstant.UNDER_LINE).concat(formDTO.getEndTime()) + "\n" + + "文件下载地址: " + uploadResult.getData().getUrl() + "\n\n"); + request.setText(text);*/ + + + log.info("发送钉钉消息入参:"+JSON.toJSONString(request,true)); + HttpClientManager.getInstance().sendDingMsg(JSON.toJSONString(request), url, secret); + } + } + + } From dda659cd3eb53ec5f4a899aefc52cf96ddaacc47 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Fri, 4 Mar 2022 10:01:51 +0800 Subject: [PATCH 068/115] =?UTF-8?q?=E6=A6=86=E5=B1=B1=E5=8F=91=E7=A7=AF?= =?UTF-8?q?=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../constant/SpecialCustomerOrgConstant.java | 23 +++++++++++-------- .../tools/utils/YuShanSysApiService.java | 12 +++++++++- 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/SpecialCustomerOrgConstant.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/SpecialCustomerOrgConstant.java index 05058b1211..e65434f0bd 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/SpecialCustomerOrgConstant.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/SpecialCustomerOrgConstant.java @@ -18,14 +18,19 @@ public interface SpecialCustomerOrgConstant { */ String test="6e511da6816e53af4cda952365a26eb9"; - // /** - // * 榆山生产客户id - // */ - // String YUSHAN_PROD_CUSTOMER_ID = "46c55cb862d6d5e6d05d2ab61a1cc07e"; - // - // /** - // * 榆山测试客户id - // */ - // String YUSHAN_TEST_CUSTOMER_ID = "a4bbf298d8e427844038cee466f022ef"; + /** + * 榆山生产客户id + */ + String YUSHAN_PROD_CUSTOMER_ID = "46c55cb862d6d5e6d05d2ab61a1cc07e"; + + /** + * 榆山测试客户id + */ + String YUSHAN_TEST_CUSTOMER_ID = "a4bbf298d8e427844038cee466f022ef"; + + /** + * 生产平阴客户id + */ + String PING_YIN_CUSTOMER_ID="6f203e30de1a65aab7e69c058826cd80"; } diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/YuShanSysApiService.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/YuShanSysApiService.java index 9779c6d990..1a714fdffd 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/YuShanSysApiService.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/YuShanSysApiService.java @@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSON; import com.epmet.commons.tools.constant.SpecialCustomerOrgConstant; import com.epmet.commons.tools.dto.form.UpdateUserPointsFormDTO; import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; +import com.epmet.commons.tools.enums.EnvEnum; import com.epmet.commons.tools.enums.ExternalApiEnum; import com.epmet.commons.tools.enums.ExternalServerEnum; import com.epmet.commons.tools.exception.EpmetErrorCode; @@ -39,7 +40,16 @@ public class YuShanSysApiService { if (StringUtils.isBlank(customerId) || CollectionUtils.isEmpty(paramList)) { throw new RenException("参数错误"); } - String serverUrl = ExternalServerEnum.getUrl(customerId); + if (!SpecialCustomerOrgConstant.PING_YIN_CUSTOMER_ID.equals(customerId)) { + return; + } + String serverUrl = null; + EnvEnum currentEnv = EnvEnum.getCurrentEnv(); + if (EnvEnum.PROD.getCode().equals(currentEnv.getCode())) { + serverUrl = ExternalServerEnum.getUrl(SpecialCustomerOrgConstant.YUSHAN_PROD_CUSTOMER_ID); + } else if (EnvEnum.TEST.getCode().equals(currentEnv.getCode()) || EnvEnum.LOCAL.getCode().equals(currentEnv.getCode())) { + serverUrl = ExternalServerEnum.getUrl(SpecialCustomerOrgConstant.YUSHAN_TEST_CUSTOMER_ID); + } if (StringUtils.isBlank(serverUrl)) { log.warn(String.format("当前客户:%s,未配置服务器地址", customerId)); return; From 786c7021003b7acaca0402112b2ab7bc423b9120 Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Fri, 4 Mar 2022 10:17:49 +0800 Subject: [PATCH 069/115] bug --- .../com/epmet/model/ImportBuildingInfoListener.java | 6 ++++++ .../com/epmet/model/ImportHouseInfoListener.java | 12 +++++++++++- .../epmet/model/ImportNeighborHoodInfoListener.java | 6 ++++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java index 73f4a18b84..c0adc2ccad 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java @@ -80,6 +80,12 @@ public class ImportBuildingInfoListener extends AnalysisEventListener list = icBuildingDao.selectHouseTotalIsNull(formDTO.getCustomerId()); if (!CollectionUtils.isEmpty(list)){ List houseNum = icBuildingDao.selectHouseNum(list); - icBuildingDao.allUpdateHouseNum(houseNum); + if (!CollectionUtils.isEmpty(houseNum)){ + icBuildingDao.allUpdateHouseNum(houseNum); + } } // 删除缓存 icHouseRedis.delTemporaryCacheGrids(formDTO.getCustomerId(), formDTO.getUserId()); diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportNeighborHoodInfoListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportNeighborHoodInfoListener.java index 72c4f30bb6..75e5b8ba6f 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportNeighborHoodInfoListener.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportNeighborHoodInfoListener.java @@ -83,6 +83,12 @@ public class ImportNeighborHoodInfoListener extends AnalysisEventListener Date: Fri, 4 Mar 2022 10:28:30 +0800 Subject: [PATCH 070/115] =?UTF-8?q?=E7=A4=BE=E4=BC=9A=E8=87=AA=E7=BB=84?= =?UTF-8?q?=E7=BB=87=E5=AF=BC=E5=85=A5bug=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../excel/ImportCommunitySelfOrganization.java | 2 +- .../IcCommunitySelfOrganizationServiceImpl.java | 14 +++++++++++--- .../impl/IcPartymemberStyleServiceImpl.java | 2 +- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/ImportCommunitySelfOrganization.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/ImportCommunitySelfOrganization.java index e6b04d8938..a6c6102431 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/ImportCommunitySelfOrganization.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/ImportCommunitySelfOrganization.java @@ -38,7 +38,7 @@ public class ImportCommunitySelfOrganization extends ExcelVerifyInfo { private String principalPhone; @Excel(name = "创建时间", needMerge = true) - private Date organizationCreatedTime; + private String organizationCreatedTime; @ExcelCollection(name = "组织成员") private List persons; diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcCommunitySelfOrganizationServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcCommunitySelfOrganizationServiceImpl.java index 86f713e74d..9eb2f52a90 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcCommunitySelfOrganizationServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcCommunitySelfOrganizationServiceImpl.java @@ -67,6 +67,8 @@ import org.springframework.web.multipart.commons.CommonsMultipartFile; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.OutputStream; +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicReference; @@ -433,7 +435,7 @@ public class IcCommunitySelfOrganizationServiceImpl extends BaseServiceImpl { @@ -540,7 +542,12 @@ public class IcCommunitySelfOrganizationServiceImpl extends BaseServiceImpl { @@ -579,6 +586,7 @@ public class IcCommunitySelfOrganizationServiceImpl extends BaseServiceImpl Date: Fri, 4 Mar 2022 10:54:30 +0800 Subject: [PATCH 071/115] =?UTF-8?q?=E6=8F=90=E7=A4=BA=E6=8B=86=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/ImportBuildingInfoListener.java | 30 ++++++++- .../epmet/model/ImportHouseInfoListener.java | 62 +++++++++++++++++-- .../model/ImportNeighborHoodInfoListener.java | 20 ++++++ 3 files changed, 104 insertions(+), 8 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java index c0adc2ccad..27ab369129 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java @@ -80,10 +80,34 @@ public class ImportBuildingInfoListener extends AnalysisEventListener Date: Fri, 4 Mar 2022 12:54:39 +0800 Subject: [PATCH 072/115] =?UTF-8?q?=E6=B4=BB=E8=B7=83=E5=BA=A6=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E4=B8=8A=E4=BC=A0oss=E5=8F=91=E9=92=89=E9=92=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../govorg/impl/GovOrgServiceImpl.java | 10 ++--- .../epmet-job/epmet-job-server/pom.xml | 6 +++ .../com/epmet/controller/DemoController.java | 26 +++++++++++-- .../feign/DataAggregatorFeignClient.java | 24 ++++++++++++ ...gatorFeignClientClientFallBackFactory.java | 23 +++++++++++ .../com/epmet/task/ExportGridLiveResTask.java | 39 +++++++++++++++++++ 6 files changed, 120 insertions(+), 8 deletions(-) create mode 100644 epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/feign/DataAggregatorFeignClient.java create mode 100644 epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/feign/impl/DataAggregatorFeignClientClientFallBackFactory.java create mode 100644 epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/ExportGridLiveResTask.java diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java index c460665cf5..861df6da98 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java @@ -761,15 +761,15 @@ public class GovOrgServiceImpl implements GovOrgService { log.warn("【网格活跃度统计】调用OSS上传结果描述文件失败"); } else { //EPMETV3群机器人 - // String secret = DingDingRobotConstant.V3_ROBOT_SECRET; - // String url = DingDingRobotConstant.V3_ROBOT_URL; - String secret = DingDingRobotConstant.YZM_TEST_SECRET; - String url = DingDingRobotConstant.YZM_TEST_URL; + String secret = DingDingRobotConstant.V3_ROBOT_SECRET; + String url = DingDingRobotConstant.V3_ROBOT_URL; + // String secret = DingDingRobotConstant.YZM_TEST_SECRET; + // String url = DingDingRobotConstant.YZM_TEST_URL; DingTextBriefNessFormDTO dingTalkTextMsg=new DingTextBriefNessFormDTO(); dingTalkTextMsg.setMsgtype("text"); - //小雷哥手机号:18660295251 + //小雷哥手机号:18660295251, OapiRobotSendRequest.At at = new OapiRobotSendRequest.At(); at.setAtMobiles(Arrays.asList("18660295251","15764229697")); at.setIsAtAll(false); diff --git a/epmet-module/epmet-job/epmet-job-server/pom.xml b/epmet-module/epmet-job/epmet-job-server/pom.xml index f772b6134b..80377c1fba 100644 --- a/epmet-module/epmet-job/epmet-job-server/pom.xml +++ b/epmet-module/epmet-job/epmet-job-server/pom.xml @@ -102,6 +102,12 @@ 2.0.0 compile + + com.epmet + data-aggregator-client + 2.0.0 + compile + diff --git a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/controller/DemoController.java b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/controller/DemoController.java index 6bb9718720..ace6b473bc 100644 --- a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/controller/DemoController.java +++ b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/controller/DemoController.java @@ -8,12 +8,16 @@ package com.epmet.controller; +import com.alibaba.fastjson.JSON; +import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.dataaggre.dto.govorg.form.GridLivelyFormDTO; +import com.epmet.feign.DataAggregatorFeignClient; import com.epmet.feign.DataStatisticalOpenFeignClient; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; 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.RestController; +import org.springframework.web.bind.annotation.*; /** * 定时任务 @@ -27,6 +31,8 @@ public class DemoController { @Autowired private DataStatisticalOpenFeignClient client; + @Autowired + private DataAggregatorFeignClient dataAggregatorFeignClient; @GetMapping("testAlarm") public void testAlarm() { @@ -35,4 +41,18 @@ public class DemoController { //} client.agencyGridIssueStats(null); } + + + @PostMapping("exportGridLiveRes") + public Result exportGridLiveRes(@RequestParam("params") String params) { + if(StringUtils.isBlank(params)){ + return new Result(); + } + GridLivelyFormDTO formDTO = new GridLivelyFormDTO(); + if (StringUtils.isNotBlank(params)) { + formDTO = JSON.parseObject(params, GridLivelyFormDTO.class); + } + ValidatorUtils.validateEntity(formDTO,GridLivelyFormDTO.Grid.class); + return dataAggregatorFeignClient.exportGridLiveRes(formDTO); + } } diff --git a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/feign/DataAggregatorFeignClient.java b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/feign/DataAggregatorFeignClient.java new file mode 100644 index 0000000000..46976ad07d --- /dev/null +++ b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/feign/DataAggregatorFeignClient.java @@ -0,0 +1,24 @@ +package com.epmet.feign; + + +import com.epmet.commons.tools.constant.ServiceConstant; +import com.epmet.commons.tools.utils.Result; +import com.epmet.dataaggre.dto.govorg.form.GridLivelyFormDTO; +import com.epmet.feign.impl.DataAggregatorFeignClientClientFallBackFactory; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +@FeignClient(name = ServiceConstant.DATA_AGGREGATOR_SERVER, fallback = DataAggregatorFeignClientClientFallBackFactory.class) +// @FeignClient(name = ServiceConstant.DATA_AGGREGATOR_SERVER, fallback= DataAggregatorFeignClientClientFallBackFactory.class,url = "localhost:8114") +public interface DataAggregatorFeignClient { + + /** + * 定时任务导出网格活跃统计表 + * @param form + * @return + */ + @PostMapping(value = "data/aggregator/org/export-send-msg") + Result exportGridLiveRes(@RequestBody GridLivelyFormDTO form); + +} diff --git a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/feign/impl/DataAggregatorFeignClientClientFallBackFactory.java b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/feign/impl/DataAggregatorFeignClientClientFallBackFactory.java new file mode 100644 index 0000000000..7e6504bcfa --- /dev/null +++ b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/feign/impl/DataAggregatorFeignClientClientFallBackFactory.java @@ -0,0 +1,23 @@ +package com.epmet.feign.impl; + + +import com.epmet.commons.tools.constant.ServiceConstant; +import com.epmet.commons.tools.utils.ModuleUtils; +import com.epmet.commons.tools.utils.Result; +import com.epmet.dataaggre.dto.govorg.form.GridLivelyFormDTO; +import com.epmet.feign.DataAggregatorFeignClient; +import org.springframework.stereotype.Component; + +@Component +public class DataAggregatorFeignClientClientFallBackFactory implements DataAggregatorFeignClient { + + /** + * 定时任务导出网格活跃统计表 + * @param form + * @return + */ + @Override + public Result exportGridLiveRes(GridLivelyFormDTO form) { + return ModuleUtils.feignConError(ServiceConstant.DATA_AGGREGATOR_SERVER, "pcworkRecordListExportSendMsg",form); + } +} diff --git a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/ExportGridLiveResTask.java b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/ExportGridLiveResTask.java new file mode 100644 index 0000000000..e5d8bca884 --- /dev/null +++ b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/ExportGridLiveResTask.java @@ -0,0 +1,39 @@ +package com.epmet.task; + +import com.alibaba.fastjson.JSON; +import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.dataaggre.dto.govorg.form.GridLivelyFormDTO; +import com.epmet.feign.DataAggregatorFeignClient; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + + +/** + * 每个星期一的凌晨5点执行,查询网格活跃度统计导出excel,上传oss, 发送钉钉@小雷哥 + */ +@Slf4j +@Component("exportGridLiveResTask") +public class ExportGridLiveResTask implements ITask { + + @Autowired + private DataAggregatorFeignClient dataAggregatorFeignClient; + + @Override + public void run(String params) { + if(StringUtils.isBlank(params)){ + return; + } + GridLivelyFormDTO formDTO = new GridLivelyFormDTO(); + if (StringUtils.isNotBlank(params)) { + formDTO = JSON.parseObject(params, GridLivelyFormDTO.class); + } + ValidatorUtils.validateEntity(formDTO,GridLivelyFormDTO.Grid.class); + Result result = dataAggregatorFeignClient.exportGridLiveRes(formDTO); + if(!result.success()){ + log.error(String.format("exportGridLiveResTask网格活跃度统计导出失败,入参:%s",params)); + } + } +} \ No newline at end of file From 4c1473c1048e8d02d781cb73850a8c4999ec306f Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Fri, 4 Mar 2022 13:22:51 +0800 Subject: [PATCH 073/115] =?UTF-8?q?=E6=AF=8F=E5=91=A8=E4=B8=80=E6=89=A7?= =?UTF-8?q?=E8=A1=8C=EF=BC=8C=E5=8F=96=E4=B8=8A=E4=B8=AA=E8=87=AA=E7=84=B6?= =?UTF-8?q?=E5=91=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/task/ExportGridLiveResTask.java | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/ExportGridLiveResTask.java b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/ExportGridLiveResTask.java index e5d8bca884..6aaad889f4 100644 --- a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/ExportGridLiveResTask.java +++ b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/ExportGridLiveResTask.java @@ -10,6 +10,10 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.*; + /** * 每个星期一的凌晨5点执行,查询网格活跃度统计导出excel,上传oss, 发送钉钉@小雷哥 @@ -30,10 +34,33 @@ public class ExportGridLiveResTask implements ITask { if (StringUtils.isNotBlank(params)) { formDTO = JSON.parseObject(params, GridLivelyFormDTO.class); } + //默认获取当前日期的上一个自然周 + if (StringUtils.isBlank(formDTO.getStartTime()) || StringUtils.isBlank(formDTO.getEndTime())) { + Calendar calendar = Calendar.getInstance(); + calendar.add(Calendar.DATE, -1); + //上周日的日期 + Date yesterday = calendar.getTime(); + DateFormat format = new SimpleDateFormat("yyyyMMdd"); + Calendar c = new GregorianCalendar(); + //这里设置一周开始时间是星期一 + c.setFirstDayOfWeek(Calendar.MONDAY); + c.setTime(yesterday); + c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek()); + //获取当前自然周的起始时间 + String beginTime = format.format(c.getTime()); + c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek() + 6); + //当前自然周的截止时间 + String endTime = format.format(c.getTime()); + formDTO.setStartTime(beginTime); + formDTO.setEndTime(endTime); + } ValidatorUtils.validateEntity(formDTO,GridLivelyFormDTO.Grid.class); Result result = dataAggregatorFeignClient.exportGridLiveRes(formDTO); if(!result.success()){ log.error(String.format("exportGridLiveResTask网格活跃度统计导出失败,入参:%s",params)); } } + + + } \ No newline at end of file From 680336195d185293295e57e41c6543f4262f5d42 Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Fri, 4 Mar 2022 14:06:44 +0800 Subject: [PATCH 074/115] =?UTF-8?q?=E6=8F=90=E7=A4=BA=E8=AF=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/ImportBuildingInfoListener.java | 21 ++++++++++---- .../epmet/model/ImportHouseInfoListener.java | 29 ++++++++++++++----- .../model/ImportNeighborHoodInfoListener.java | 13 +++++++-- 3 files changed, 48 insertions(+), 15 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java index 27ab369129..6c1963888a 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java @@ -223,7 +223,9 @@ public class ImportBuildingInfoListener extends AnalysisEventListener Date: Fri, 4 Mar 2022 14:08:47 +0800 Subject: [PATCH 075/115] aggopenfeign --- .../feign/DataAggregatorOpenFeignClient.java} | 10 +++++----- ...ggregatorOpenFeignClientFallbackFactory.java | 17 +++++++++++++++++ .../service/govorg/impl/GovOrgServiceImpl.java | 4 ++-- .../com/epmet/controller/DemoController.java | 4 ++-- .../com/epmet/task/ExportGridLiveResTask.java | 8 +++++--- 5 files changed, 31 insertions(+), 12 deletions(-) rename epmet-module/{epmet-job/epmet-job-server/src/main/java/com/epmet/feign/DataAggregatorFeignClient.java => data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/feign/DataAggregatorOpenFeignClient.java} (68%) create mode 100644 epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/feign/impl/DataAggregatorOpenFeignClientFallbackFactory.java diff --git a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/feign/DataAggregatorFeignClient.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/feign/DataAggregatorOpenFeignClient.java similarity index 68% rename from epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/feign/DataAggregatorFeignClient.java rename to epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/feign/DataAggregatorOpenFeignClient.java index 46976ad07d..fd05773c2f 100644 --- a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/feign/DataAggregatorFeignClient.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/feign/DataAggregatorOpenFeignClient.java @@ -1,17 +1,17 @@ -package com.epmet.feign; +package com.epmet.dataaggre.feign; import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.utils.Result; import com.epmet.dataaggre.dto.govorg.form.GridLivelyFormDTO; -import com.epmet.feign.impl.DataAggregatorFeignClientClientFallBackFactory; +import com.epmet.dataaggre.feign.impl.DataAggregatorOpenFeignClientFallbackFactory; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; -@FeignClient(name = ServiceConstant.DATA_AGGREGATOR_SERVER, fallback = DataAggregatorFeignClientClientFallBackFactory.class) -// @FeignClient(name = ServiceConstant.DATA_AGGREGATOR_SERVER, fallback= DataAggregatorFeignClientClientFallBackFactory.class,url = "localhost:8114") -public interface DataAggregatorFeignClient { +// @FeignClient(name = ServiceConstant.DATA_AGGREGATOR_SERVER, fallbackFactory = DataAggregatorOpenFeignClientFallbackFactory.class) +@FeignClient(name = ServiceConstant.DATA_AGGREGATOR_SERVER, fallbackFactory= DataAggregatorOpenFeignClientFallbackFactory.class,url = "localhost:8114") +public interface DataAggregatorOpenFeignClient { /** * 定时任务导出网格活跃统计表 diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/feign/impl/DataAggregatorOpenFeignClientFallbackFactory.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/feign/impl/DataAggregatorOpenFeignClientFallbackFactory.java new file mode 100644 index 0000000000..ffb9a28654 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/feign/impl/DataAggregatorOpenFeignClientFallbackFactory.java @@ -0,0 +1,17 @@ +package com.epmet.dataaggre.feign.impl; + +import com.epmet.dataaggre.feign.DataAggregatorOpenFeignClient; +import feign.hystrix.FallbackFactory; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +@Slf4j +@Component +public class DataAggregatorOpenFeignClientFallbackFactory implements FallbackFactory { + private DataAggregatorOpenFeignClientFallback fallback = new DataAggregatorOpenFeignClientFallback(); + + @Override + public DataAggregatorOpenFeignClient create(Throwable throwable) { + return null; + } +} \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java index 861df6da98..7acb871048 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java @@ -771,7 +771,7 @@ public class GovOrgServiceImpl implements GovOrgService { //小雷哥手机号:18660295251, OapiRobotSendRequest.At at = new OapiRobotSendRequest.At(); - at.setAtMobiles(Arrays.asList("18660295251","15764229697")); + at.setAtMobiles(Arrays.asList("18660295251")); at.setIsAtAll(false); dingTalkTextMsg.setAt(at); @@ -780,7 +780,7 @@ public class GovOrgServiceImpl implements GovOrgService { text.setContent("网格活跃度统计: \n" + "起止时间: " + formDTO.getStartTime().concat(StrConstant.UNDER_LINE).concat(formDTO.getEndTime()) + "\n" + "文件下载地址: " + uploadResult.getData().getUrl() + "\n"+ - "请查收@18660295251@15764229697"); + "请查收@18660295251"); dingTalkTextMsg.setText(text); HttpClientManager.getInstance().sendDingMsg(JSON.toJSONString(dingTalkTextMsg), url, secret); } diff --git a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/controller/DemoController.java b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/controller/DemoController.java index ace6b473bc..b0f2b3a32f 100644 --- a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/controller/DemoController.java +++ b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/controller/DemoController.java @@ -12,7 +12,7 @@ import com.alibaba.fastjson.JSON; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.dataaggre.dto.govorg.form.GridLivelyFormDTO; -import com.epmet.feign.DataAggregatorFeignClient; +import com.epmet.dataaggre.feign.DataAggregatorOpenFeignClient; import com.epmet.feign.DataStatisticalOpenFeignClient; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -32,7 +32,7 @@ public class DemoController { @Autowired private DataStatisticalOpenFeignClient client; @Autowired - private DataAggregatorFeignClient dataAggregatorFeignClient; + private DataAggregatorOpenFeignClient dataAggregatorFeignClient; @GetMapping("testAlarm") public void testAlarm() { diff --git a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/ExportGridLiveResTask.java b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/ExportGridLiveResTask.java index 6aaad889f4..a3a4aae9bb 100644 --- a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/ExportGridLiveResTask.java +++ b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/ExportGridLiveResTask.java @@ -4,7 +4,7 @@ import com.alibaba.fastjson.JSON; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.dataaggre.dto.govorg.form.GridLivelyFormDTO; -import com.epmet.feign.DataAggregatorFeignClient; +import com.epmet.dataaggre.feign.DataAggregatorOpenFeignClient; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -12,7 +12,9 @@ import org.springframework.stereotype.Component; import java.text.DateFormat; import java.text.SimpleDateFormat; -import java.util.*; +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; /** @@ -23,7 +25,7 @@ import java.util.*; public class ExportGridLiveResTask implements ITask { @Autowired - private DataAggregatorFeignClient dataAggregatorFeignClient; + private DataAggregatorOpenFeignClient dataAggregatorFeignClient; @Override public void run(String params) { From e290f50a7800483e905febb9c01d8b3c2c75c92d Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Fri, 4 Mar 2022 14:09:45 +0800 Subject: [PATCH 076/115] aggopenfeign --- .../impl/DataAggregatorOpenFeignClientFallback.java} | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) rename epmet-module/{epmet-job/epmet-job-server/src/main/java/com/epmet/feign/impl/DataAggregatorFeignClientClientFallBackFactory.java => data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/feign/impl/DataAggregatorOpenFeignClientFallback.java} (68%) diff --git a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/feign/impl/DataAggregatorFeignClientClientFallBackFactory.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/feign/impl/DataAggregatorOpenFeignClientFallback.java similarity index 68% rename from epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/feign/impl/DataAggregatorFeignClientClientFallBackFactory.java rename to epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/feign/impl/DataAggregatorOpenFeignClientFallback.java index 7e6504bcfa..ea2bfebddf 100644 --- a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/feign/impl/DataAggregatorFeignClientClientFallBackFactory.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/feign/impl/DataAggregatorOpenFeignClientFallback.java @@ -1,16 +1,12 @@ -package com.epmet.feign.impl; - +package com.epmet.dataaggre.feign.impl; import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.utils.ModuleUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.dataaggre.dto.govorg.form.GridLivelyFormDTO; -import com.epmet.feign.DataAggregatorFeignClient; -import org.springframework.stereotype.Component; - -@Component -public class DataAggregatorFeignClientClientFallBackFactory implements DataAggregatorFeignClient { +import com.epmet.dataaggre.feign.DataAggregatorOpenFeignClient; +public class DataAggregatorOpenFeignClientFallback implements DataAggregatorOpenFeignClient { /** * 定时任务导出网格活跃统计表 * @param form From 82b975c6b4c7691400a22737430c4f5a4eeb48c1 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Fri, 4 Mar 2022 14:27:23 +0800 Subject: [PATCH 077/115] url --- .../epmet/dataaggre/feign/DataAggregatorOpenFeignClient.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/feign/DataAggregatorOpenFeignClient.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/feign/DataAggregatorOpenFeignClient.java index fd05773c2f..a164b0c020 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/feign/DataAggregatorOpenFeignClient.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/feign/DataAggregatorOpenFeignClient.java @@ -9,8 +9,8 @@ import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; -// @FeignClient(name = ServiceConstant.DATA_AGGREGATOR_SERVER, fallbackFactory = DataAggregatorOpenFeignClientFallbackFactory.class) -@FeignClient(name = ServiceConstant.DATA_AGGREGATOR_SERVER, fallbackFactory= DataAggregatorOpenFeignClientFallbackFactory.class,url = "localhost:8114") +@FeignClient(name = ServiceConstant.DATA_AGGREGATOR_SERVER, fallbackFactory = DataAggregatorOpenFeignClientFallbackFactory.class) +// @FeignClient(name = ServiceConstant.DATA_AGGREGATOR_SERVER, fallbackFactory= DataAggregatorOpenFeignClientFallbackFactory.class,url = "localhost:8114") public interface DataAggregatorOpenFeignClient { /** From 7a35bc6e6730fcb3100808870afd1029b449f8e7 Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Fri, 4 Mar 2022 14:55:22 +0800 Subject: [PATCH 078/115] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=201.?= =?UTF-8?q?=E6=98=AF=E5=90=A6=E6=9C=89=E6=AD=A3=E5=9C=A8=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E7=9A=84=E5=AF=BC=E5=85=A5=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/controller/ImportTaskController.java | 15 ++++++++++++--- .../java/com/epmet/service/ImportTaskService.java | 7 +++++++ .../epmet/service/impl/ImportTaskServiceImpl.java | 9 +++++++++ 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/ImportTaskController.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/ImportTaskController.java index 850ae91056..ac855bd485 100644 --- a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/ImportTaskController.java +++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/ImportTaskController.java @@ -12,9 +12,7 @@ import com.epmet.dto.form.ImportTaskCommonFormDTO; import com.epmet.dto.result.ImportTaskCommonResultDTO; import com.epmet.service.ImportTaskService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("import-task") @@ -70,4 +68,15 @@ public class ImportTaskController { return new Result(); } + /** + * 检查是否有正在执行的任务 + * @param bizType 业务类型 + * @return + */ + @GetMapping("processing-check") + public Result processingTaskCheck(@RequestParam("biz_type") String bizType) { + Boolean r = importTaskService.processingTaskCheck(bizType); + return new Result().ok(r); + } + } diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/ImportTaskService.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/ImportTaskService.java index 56eddf11bb..918643d8f2 100644 --- a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/ImportTaskService.java +++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/ImportTaskService.java @@ -44,4 +44,11 @@ public interface ImportTaskService { * @return */ PageData page(ImportTaskCommonFormDTO param); + + /** + * 检查是否有正在执行的任务 + * @param bizType + * @return + */ + Boolean processingTaskCheck(String bizType); } diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java index 82d6f895b0..e9d24693c2 100644 --- a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java +++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java @@ -108,4 +108,13 @@ public class ImportTaskServiceImpl implements ImportTaskService { }); return new PageData<>(list,page.getTotal()); } + + @Override + public Boolean processingTaskCheck(String bizType) { + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(ImportTaskEntity::getBizType, bizType); + query.eq(ImportTaskEntity::getProcessStatus, ImportTaskConstants.PROCESS_STATUS_PROCESSING); + + return importRecordDao.selectCount(query) > 0; + } } From e89de0591fc0aad7e1a2d8ab1c66ad1622da314d Mon Sep 17 00:00:00 2001 From: jianjun Date: Fri, 4 Mar 2022 15:03:57 +0800 Subject: [PATCH 079/115] =?UTF-8?q?=E9=94=99=E8=AF=AF=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E6=89=93=E5=8D=B0=E5=A0=86=E6=A0=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/IcCommunitySelfOrganizationServiceImpl.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcCommunitySelfOrganizationServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcCommunitySelfOrganizationServiceImpl.java index 9eb2f52a90..2bce782c3f 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcCommunitySelfOrganizationServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcCommunitySelfOrganizationServiceImpl.java @@ -586,8 +586,7 @@ public class IcCommunitySelfOrganizationServiceImpl extends BaseServiceImpl Date: Fri, 4 Mar 2022 15:16:25 +0800 Subject: [PATCH 080/115] =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9A=201.?= =?UTF-8?q?=E6=98=AF=E5=90=A6=E6=9C=89=E6=AD=A3=E5=9C=A8=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E7=9A=84=E5=AF=BC=E5=85=A5=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/controller/ImportTaskController.java | 6 +++--- .../java/com/epmet/service/impl/ImportTaskServiceImpl.java | 5 ++++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/ImportTaskController.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/ImportTaskController.java index ac855bd485..8af4083542 100644 --- a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/ImportTaskController.java +++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/ImportTaskController.java @@ -69,12 +69,12 @@ public class ImportTaskController { } /** - * 检查是否有正在执行的任务 - * @param bizType 业务类型 + * 检查是否有正在执行的任务。 + * @param bizType 业务类型,非必填,不传则任意一种导入正在执行都会返回true * @return */ @GetMapping("processing-check") - public Result processingTaskCheck(@RequestParam("biz_type") String bizType) { + public Result processingTaskCheck(@RequestParam(value = "biz_type", required = false) String bizType) { Boolean r = importTaskService.processingTaskCheck(bizType); return new Result().ok(r); } diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java index e9d24693c2..cb28fecad8 100644 --- a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java +++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java @@ -14,6 +14,7 @@ import com.epmet.entity.ImportTaskEntity; import com.epmet.service.ImportTaskService; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -112,7 +113,9 @@ public class ImportTaskServiceImpl implements ImportTaskService { @Override public Boolean processingTaskCheck(String bizType) { LambdaQueryWrapper query = new LambdaQueryWrapper<>(); - query.eq(ImportTaskEntity::getBizType, bizType); + if (StringUtils.isNotBlank(bizType)) { + query.eq(ImportTaskEntity::getBizType, bizType); + } query.eq(ImportTaskEntity::getProcessStatus, ImportTaskConstants.PROCESS_STATUS_PROCESSING); return importRecordDao.selectCount(query) > 0; From abcb68b58eaa37eab46a9577da7464372a63df66 Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Fri, 4 Mar 2022 15:28:19 +0800 Subject: [PATCH 081/115] =?UTF-8?q?=E5=AF=BC=E5=85=A5=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../excel/CommunitySelfOrgImportExcel.java | 6 +-- ...cCommunitySelfOrganizationServiceImpl.java | 51 +++++++++++++------ .../impl/IcPartymemberStyleServiceImpl.java | 6 ++- 3 files changed, 42 insertions(+), 21 deletions(-) diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/CommunitySelfOrgImportExcel.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/CommunitySelfOrgImportExcel.java index 4b37754e98..a55b7c9b69 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/CommunitySelfOrgImportExcel.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/CommunitySelfOrgImportExcel.java @@ -27,9 +27,9 @@ import lombok.Data; @Data public class CommunitySelfOrgImportExcel { - @Excel(name = "组织名称", width = 40) - private String agencyName; - @Excel(name = "社会组织名称", width = 40) + /*@Excel(name = "组织名称", width = 40) + private String agencyName;*/ + @Excel(name = "社会自组织名称", width = 40) private String societyName; @Excel(name = "错误信息", width = 50) private String errorInfo; diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcCommunitySelfOrganizationServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcCommunitySelfOrganizationServiceImpl.java index 9eb2f52a90..7dd0c6343e 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcCommunitySelfOrganizationServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcCommunitySelfOrganizationServiceImpl.java @@ -478,8 +478,9 @@ public class IcCommunitySelfOrganizationServiceImpl extends BaseServiceImpl fileList = new ArrayList<>(); CommunitySelfOrgImportExcel excel = null; //1.读取Excel数据 @@ -489,7 +490,7 @@ public class IcCommunitySelfOrganizationServiceImpl extends BaseServiceImpl persons = new ArrayList<>(); + AtomicReference bl = new AtomicReference<>(false); + StringBuffer msg = new StringBuffer(""); if (CollectionUtils.isNotEmpty(l.getPersons())){ l.getPersons().forEach(p -> { boolean m = PhoneValidatorUtils.isMobile(p.getPersonPhone()); boolean t = PhoneValidatorUtils.isTel(p.getPersonPhone()); if (!m && !t){ - throw new EpmetException(EpmetErrorCode.CHECK_PHONE_ERROR.getCode()); + bl.set(true); + msg.append("自组织下成员手机号错误;"); + log.warn("自组织下成员手机号错误,自组织名称{}", l.getOrganizationName()); + return; + //throw new EpmetException(EpmetErrorCode.CHECK_PHONE_ERROR.getCode()); } }); - List persons = ConvertUtils.sourceToTarget(l.getPersons(), IcCommunitySelfOrganizationPersonnelEntity.class); + persons = ConvertUtils.sourceToTarget(l.getPersons(), IcCommunitySelfOrganizationPersonnelEntity.class); Map> groupByPhone = persons.stream().collect(Collectors.groupingBy(IcCommunitySelfOrganizationPersonnelEntity::getPersonPhone)); List phones = new ArrayList<>(); groupByPhone.forEach((k,v) -> { @@ -566,28 +570,43 @@ public class IcCommunitySelfOrganizationServiceImpl extends BaseServiceImpl { sb.append(p).append(","); }); String copywriter = sb.toString().substring(NumConstant.ZERO, sb.length() - NumConstant.ONE); EpmetErrorCode.EXISTS_SAME_PHONE_ERROR.setMsg(String.format(EpmetErrorCode.EXISTS_SAME_PHONE_ERROR.getMsg(),copywriter)); - throw new RenException(EpmetErrorCode.EXISTS_SAME_PHONE_ERROR.getCode()); + throw new RenException(EpmetErrorCode.EXISTS_SAME_PHONE_ERROR.getCode());*/ } + } + if(bl.get()){ + CommunitySelfOrgImportExcel ex = new CommunitySelfOrgImportExcel(); + //ex.setAgencyName(l.getOrganizationName()); + ex.setSocietyName(l.getOrganizationName()); + ex.setErrorInfo(msg.toString()); + fileList.add(ex); + return; + } + baseDao.insert(e); + if(CollectionUtils.isNotEmpty(persons)){ persons.forEach(p -> { p.setCustomerId(tokenDto.getCustomerId()); p.setOrgId(e.getId()); }); personnelService.insertBatch(persons); } + }); } //4.错误数据生成文件,修改导入任务状态 String url = erroeImport(fileList); upImportTask(url, taskId, tokenDto.getUserId(), true); } catch (Exception e) { - e.printStackTrace(); - log.error("【社会自组织信息导入】程序错误"); + String errorMsg = ExceptionUtils.getErrorStackTrace(e); + log.error("【社会自组织信息导入】程序错误:{}", errorMsg); upImportTask(null, taskId, tokenDto.getUserId(), false); } } diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleServiceImpl.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleServiceImpl.java index 8218ed574f..6c16610b6c 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleServiceImpl.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleServiceImpl.java @@ -259,8 +259,9 @@ public class IcPartymemberStyleServiceImpl extends BaseServiceImpl fileList = new ArrayList<>(); PartyMemberImportExcel excel = null; ExcelImportResult importResult = ExcelPoiUtils.importExcelMore(file, 0, 1, IcPartymemberStyleImportExcel.class); @@ -368,7 +369,8 @@ public class IcPartymemberStyleServiceImpl extends BaseServiceImpl Date: Fri, 4 Mar 2022 15:36:25 +0800 Subject: [PATCH 082/115] emm --- .../com/epmet/controller/IcNeighborHoodController.java | 4 ++++ .../com/epmet/model/ImportNeighborHoodInfoListener.java | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java index 24c741ba51..107b6c612e 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java @@ -17,6 +17,7 @@ package com.epmet.controller; +import com.alibaba.fastjson.JSON; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.dto.result.OptionResultDTO; import com.epmet.commons.tools.exception.EpmetErrorCode; @@ -37,6 +38,7 @@ import com.epmet.dto.form.ImportTaskCommonFormDTO; import com.epmet.dto.result.ImportTaskCommonResultDTO; import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.service.IcNeighborHoodService; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -54,6 +56,7 @@ import java.util.Map; */ @RestController @RequestMapping("icneighborhood") +@Slf4j public class IcNeighborHoodController { @Autowired @@ -145,6 +148,7 @@ public class IcNeighborHoodController { if (!importTask.success()){ throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"","存在进行中的导入"); } + log.info("插入任务结果"+ JSON.toJSONString(importTask.getData())); icNeighborHoodService.neighborhoodImport(formDTO,file,importTask); return new Result(); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportNeighborHoodInfoListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportNeighborHoodInfoListener.java index 212b8c10e6..e406d517e3 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportNeighborHoodInfoListener.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportNeighborHoodInfoListener.java @@ -2,6 +2,7 @@ package com.epmet.model; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; +import com.alibaba.fastjson.JSON; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.redis.common.CustomerOrgRedis; @@ -23,6 +24,7 @@ import com.epmet.entity.IcPropertyManagementEntity; import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.redis.IcHouseRedis; import com.epmet.service.IcNeighborHoodService; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.util.CollectionUtils; @@ -38,6 +40,7 @@ import java.util.stream.Collectors; * @DateTime 2022/2/15 2:16 下午 * @DESC */ +@Slf4j public class ImportNeighborHoodInfoListener extends AnalysisEventListener { List nums = new ArrayList<>(); @@ -83,6 +86,7 @@ public class ImportNeighborHoodInfoListener extends AnalysisEventListener Date: Fri, 4 Mar 2022 15:48:31 +0800 Subject: [PATCH 083/115] error --- .../com/epmet/commons/tools/utils/YuShanSysApiService.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/YuShanSysApiService.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/YuShanSysApiService.java index 1a714fdffd..e1cb5be523 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/YuShanSysApiService.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/YuShanSysApiService.java @@ -8,7 +8,6 @@ import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; import com.epmet.commons.tools.enums.EnvEnum; import com.epmet.commons.tools.enums.ExternalApiEnum; import com.epmet.commons.tools.enums.ExternalServerEnum; -import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import lombok.extern.slf4j.Slf4j; @@ -72,8 +71,7 @@ public class YuShanSysApiService { } } } catch (Exception e) { - log.warn("updateUserPoints exception 入参:{}", JSON.toJSONString(formDTO)); - throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode(), e.getMessage()); + log.error("updateUserPoints exception 入参:{},异常:{}", JSON.toJSONString(formDTO),e); } } } From 1113c5cb636e1de85852fb0f3478bf10fa0e06d9 Mon Sep 17 00:00:00 2001 From: jianjun Date: Fri, 4 Mar 2022 15:59:30 +0800 Subject: [PATCH 084/115] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/ImportNeighborHoodInfoListener.java | 56 ++++++++++--------- 1 file changed, 31 insertions(+), 25 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportNeighborHoodInfoListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportNeighborHoodInfoListener.java index e406d517e3..2e326c20f0 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportNeighborHoodInfoListener.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportNeighborHoodInfoListener.java @@ -4,7 +4,6 @@ import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import com.alibaba.fastjson.JSON; import com.epmet.commons.tools.constant.NumConstant; -import com.epmet.commons.tools.exception.EpmetException; 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; @@ -28,7 +27,6 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.util.CollectionUtils; -import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -332,35 +330,43 @@ public class ImportNeighborHoodInfoListener extends AnalysisEventListener Date: Fri, 4 Mar 2022 15:59:52 +0800 Subject: [PATCH 085/115] =?UTF-8?q?=E4=BD=8D=E7=BD=AE=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/service/IcNeighborHoodService.java | 2 +- .../impl/IcNeighborHoodServiceImpl.java | 32 +++++++++++++++++-- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java index 17eb160a64..1d6193834f 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java @@ -129,7 +129,7 @@ public interface IcNeighborHoodService extends BaseService * @author zxc * @date 2022/2/12 11:11 上午 */ - void neighborhoodImport(ImportInfoFormDTO formDTO, MultipartFile file,Result importTask) throws IOException; + Result neighborhoodImport(ImportInfoFormDTO formDTO, MultipartFile file,Result importTask) throws IOException; /** * 获取导入小区,楼栋,单元ID diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java index 107fb203b2..32e84af348 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java @@ -234,8 +234,36 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl importTask) throws IOException { - importNeighbor(formDTO,file,importTask); + public Result neighborhoodImport(ImportInfoFormDTO formDTO, MultipartFile file,Result importTask) throws IOException { +// importNeighbor(formDTO,file,importTask); + ExcelReader excelReader = null; + try { + InputStream inputStream = null; + try { + inputStream = file.getInputStream(); + } catch (IOException e) { + return new Result().error("读取文件失败"); + } + + excelReader = EasyExcel.read(inputStream).build(); + // 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener + ReadSheet readSheet = EasyExcel.readSheet(0).head(NeighborHoodInfoModel.class) + .registerReadListener(new ImportNeighborHoodInfoListener(formDTO,icHouseRedis,icBuildingDao,this,propertyManagementDao,epmetCommonServiceOpenFeignClient,importTask.getData().getTaskId())) + .build(); + excelReader.read(readSheet); + } catch (Exception e){ + ImportTaskCommonFormDTO input = new ImportTaskCommonFormDTO(); + input.setOperatorId(formDTO.getUserId()); + input.setTaskId(importTask.getData().getTaskId()); + input.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL); + epmetCommonServiceOpenFeignClient.finishImportTask(input); + } finally { + if (excelReader != null) { + excelReader.finish(); + } + } + + return new Result<>(); } /** From fcf5204c96d4d60f5bd57a774036f6b843435a2d Mon Sep 17 00:00:00 2001 From: jianjun Date: Fri, 4 Mar 2022 16:18:44 +0800 Subject: [PATCH 086/115] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/model/ImportNeighborHoodInfoListener.java | 1 + .../epmet/service/impl/IcNeighborHoodServiceImpl.java | 9 +++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportNeighborHoodInfoListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportNeighborHoodInfoListener.java index 2e326c20f0..791e3b6741 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportNeighborHoodInfoListener.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportNeighborHoodInfoListener.java @@ -79,6 +79,7 @@ public class ImportNeighborHoodInfoListener extends AnalysisEventListener Date: Fri, 4 Mar 2022 16:32:38 +0800 Subject: [PATCH 087/115] =?UTF-8?q?=E7=9D=A1=E4=B8=80=E7=A7=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/commons/tools/utils/YuShanSysApiService.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/YuShanSysApiService.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/YuShanSysApiService.java index e1cb5be523..317038eab6 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/YuShanSysApiService.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/YuShanSysApiService.java @@ -36,6 +36,12 @@ public class YuShanSysApiService { */ @Async public void updateUserPoints(String customerId, List paramList) { + try { + Thread.sleep(1000l); + } catch (InterruptedException e) { + log.error("调用榆山街道发放积分睡眠发生异常,{}",e); + e.printStackTrace(); + } if (StringUtils.isBlank(customerId) || CollectionUtils.isEmpty(paramList)) { throw new RenException("参数错误"); } From 1b1a0cc5ecb2fb622853fb285824aa0a9afdac8d Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Fri, 4 Mar 2022 16:47:01 +0800 Subject: [PATCH 088/115] @EnableAsync --- .../src/main/java/com/epmet/GovOrgApplication.java | 2 ++ .../com/epmet/service/impl/BuildingServiceImpl.java | 1 - .../java/com/epmet/service/impl/HouseServiceImpl.java | 1 - .../epmet/service/impl/IcNeighborHoodServiceImpl.java | 10 ++++------ 4 files changed, 6 insertions(+), 8 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/GovOrgApplication.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/GovOrgApplication.java index ff43e6542c..348a7b67b0 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/GovOrgApplication.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/GovOrgApplication.java @@ -13,6 +13,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.ServletComponentScan; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.openfeign.EnableFeignClients; +import org.springframework.scheduling.annotation.EnableAsync; /** * @@ -24,6 +25,7 @@ import org.springframework.cloud.openfeign.EnableFeignClients; @EnableDiscoveryClient @EnableFeignClients @ServletComponentScan +@EnableAsync public class GovOrgApplication { public static void main(String[] args) { diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java index 7d3bbe9602..091ef5dd1e 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java @@ -63,7 +63,6 @@ import java.util.stream.Collectors; @Slf4j @Service -@EnableAsync public class BuildingServiceImpl implements BuildingService { diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java index fa623a8950..6130bd49c1 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java @@ -69,7 +69,6 @@ import java.util.stream.Collectors; @Slf4j @Service -@EnableAsync public class HouseServiceImpl implements HouseService, ResultDataResolver { diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java index 5a42822c69..a615372862 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java @@ -22,7 +22,6 @@ import cn.afterturn.easypoi.excel.entity.ExportParams; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelReader; import com.alibaba.excel.read.metadata.ReadSheet; -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.core.metadata.IPage; @@ -42,6 +41,7 @@ import com.epmet.commons.tools.redis.common.bean.GridInfoCache; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.constant.CustomerGridConstant; +import com.epmet.constant.ImportErrorMsgConstants; import com.epmet.constants.ImportTaskConstants; import com.epmet.dao.CustomerGridDao; import com.epmet.dao.IcBuildingDao; @@ -50,6 +50,7 @@ import com.epmet.dao.IcPropertyManagementDao; import com.epmet.dto.*; import com.epmet.dto.form.ImportInfoFormDTO; import com.epmet.dto.form.ImportTaskCommonFormDTO; +import com.epmet.dto.result.ImportResultDTO; import com.epmet.dto.result.ImportTaskCommonResultDTO; import com.epmet.dto.result.InfoByNamesResultDTO; import com.epmet.dto.result.UploadImgResultDTO; @@ -61,6 +62,7 @@ import com.epmet.model.ImportNeighborHoodInfoListener; import com.epmet.model.NeighborHoodInfoModel; import com.epmet.redis.IcHouseRedis; import com.epmet.service.*; +import com.epmet.util.ExcelPoiUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.ListUtils; @@ -93,7 +95,6 @@ import java.util.stream.Collectors; */ @Slf4j @Service -@EnableAsync public class IcNeighborHoodServiceImpl extends BaseServiceImpl implements IcNeighborHoodService { @Autowired @@ -248,16 +249,13 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl Date: Fri, 4 Mar 2022 16:56:42 +0800 Subject: [PATCH 089/115] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/IcNeighborHoodServiceImpl.java | 68 ++++++++++--------- 1 file changed, 37 insertions(+), 31 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java index a615372862..d68ba40e01 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java @@ -22,6 +22,7 @@ import cn.afterturn.easypoi.excel.entity.ExportParams; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelReader; import com.alibaba.excel.read.metadata.ReadSheet; +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.core.metadata.IPage; @@ -41,7 +42,6 @@ import com.epmet.commons.tools.redis.common.bean.GridInfoCache; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.constant.CustomerGridConstant; -import com.epmet.constant.ImportErrorMsgConstants; import com.epmet.constants.ImportTaskConstants; import com.epmet.dao.CustomerGridDao; import com.epmet.dao.IcBuildingDao; @@ -50,7 +50,6 @@ import com.epmet.dao.IcPropertyManagementDao; import com.epmet.dto.*; import com.epmet.dto.form.ImportInfoFormDTO; import com.epmet.dto.form.ImportTaskCommonFormDTO; -import com.epmet.dto.result.ImportResultDTO; import com.epmet.dto.result.ImportTaskCommonResultDTO; import com.epmet.dto.result.InfoByNamesResultDTO; import com.epmet.dto.result.UploadImgResultDTO; @@ -62,7 +61,6 @@ import com.epmet.model.ImportNeighborHoodInfoListener; import com.epmet.model.NeighborHoodInfoModel; import com.epmet.redis.IcHouseRedis; import com.epmet.service.*; -import com.epmet.util.ExcelPoiUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.ListUtils; @@ -73,8 +71,6 @@ import org.apache.commons.lang3.StringUtils; import org.apache.http.entity.ContentType; import org.apache.poi.ss.usermodel.Workbook; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.scheduling.annotation.Async; -import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; @@ -85,6 +81,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.*; +import java.util.concurrent.ExecutorService; import java.util.stream.Collectors; /** @@ -117,6 +114,8 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl page(Map params) { @@ -232,35 +231,42 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl importTask) throws IOException { -// importNeighbor(formDTO,file,importTask); - ExcelReader excelReader = null; - try { - InputStream inputStream = null; + public Result neighborhoodImport(ImportInfoFormDTO formDTO, MultipartFile file,Result importTask) { + log.info("neighborhoodImport start====="); + executorService.submit(() -> { + // importNeighbor(formDTO,file,importTask); + log.info("neighborhoodImport thread start====="); + ExcelReader excelReader = null; try { - inputStream = file.getInputStream(); - } catch (IOException e) { - return new Result().error("读取文件失败"); - } + InputStream inputStream = null; + try { + inputStream = file.getInputStream(); + } catch (IOException e) { + throw new EpmetException("读取文件失败"); + } - excelReader = EasyExcel.read(inputStream).build(); - // 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener - ReadSheet readSheet = EasyExcel.readSheet(0).head(NeighborHoodInfoModel.class) - .registerReadListener(new ImportNeighborHoodInfoListener(formDTO,icHouseRedis,icBuildingDao,this,propertyManagementDao,epmetCommonServiceOpenFeignClient,importTask.getData().getTaskId())) - .build(); - excelReader.read(readSheet); - } catch (Exception e){ - ImportTaskCommonFormDTO input = new ImportTaskCommonFormDTO(); - input.setOperatorId(formDTO.getUserId()); - input.setTaskId(importTask.getData().getTaskId()); - input.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL); - epmetCommonServiceOpenFeignClient.finishImportTask(input); - } finally { - if (excelReader != null) { - excelReader.finish(); + excelReader = EasyExcel.read(inputStream).build(); + // 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener + ReadSheet readSheet = EasyExcel.readSheet(0).head(NeighborHoodInfoModel.class) + .registerReadListener(new ImportNeighborHoodInfoListener(formDTO,icHouseRedis,icBuildingDao,this,propertyManagementDao,epmetCommonServiceOpenFeignClient,importTask.getData().getTaskId())) + .build(); + log.info("neighborhoodImport build readSheet num:{}",readSheet.getSheetNo()); + excelReader.read(readSheet); + } catch (Exception e){ + log.error("neighborhoodImport import exception", e); + ImportTaskCommonFormDTO input = new ImportTaskCommonFormDTO(); + input.setOperatorId(formDTO.getUserId()); + input.setTaskId(importTask.getData().getTaskId()); + input.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL); + Result result = epmetCommonServiceOpenFeignClient.finishImportTask(input); + log.info("neighborhoodImport finishImportTask result:{}", JSON.toJSONString(result)); + } finally { + if (excelReader != null) { + excelReader.finish(); + } } - } + log.info("neighborhoodImport thread end====="); + }); return new Result<>(); } From 51be3af9fe34e4fa8ee4ee05babbedc7d9236487 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Fri, 4 Mar 2022 17:00:15 +0800 Subject: [PATCH 090/115] =?UTF-8?q?=E5=8E=BB=E6=8E=89=E6=B3=A8=E8=A7=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../commons/tools/utils/YuShanSysApiService.java | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/YuShanSysApiService.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/YuShanSysApiService.java index 317038eab6..8139dc34be 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/YuShanSysApiService.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/YuShanSysApiService.java @@ -8,11 +8,9 @@ import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; import com.epmet.commons.tools.enums.EnvEnum; import com.epmet.commons.tools.enums.ExternalApiEnum; import com.epmet.commons.tools.enums.ExternalServerEnum; -import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; -import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -34,16 +32,17 @@ public class YuShanSysApiService { * * @return */ - @Async + // @Async public void updateUserPoints(String customerId, List paramList) { - try { + /*try { Thread.sleep(1000l); } catch (InterruptedException e) { log.error("调用榆山街道发放积分睡眠发生异常,{}",e); e.printStackTrace(); - } + }*/ if (StringUtils.isBlank(customerId) || CollectionUtils.isEmpty(paramList)) { - throw new RenException("参数错误"); + log.warn("updateUserPoints 参数错误"); + return; } if (!SpecialCustomerOrgConstant.PING_YIN_CUSTOMER_ID.equals(customerId)) { return; @@ -71,13 +70,13 @@ public class YuShanSysApiService { // formDTO.setMobile("13205302682"); Result res = HttpClientManager.getInstance().sendPostByJSON(apiPath, JSON.toJSONString(formDTO)); Result result = JSON.parseObject(res.getData(), Result.class); - log.info(String.format("updateUserPoints 入参:%s;返参:%s", JSON.toJSONString(formDTO),JSON.toJSONString(result))); + log.info(String.format("updateUserPoints 入参:%s;返参:%s", JSON.toJSONString(formDTO), JSON.toJSONString(result))); if (!result.success()) { log.warn("updateUserPoints failed:{}", JSON.toJSONString(result)); } } } catch (Exception e) { - log.error("updateUserPoints exception 入参:{},异常:{}", JSON.toJSONString(formDTO),e); + log.error("updateUserPoints exception 入参:{},异常:{}", JSON.toJSONString(formDTO), e); } } } From 327c3fcec8a9d11afbe0bb33a2883c2c9d5e6597 Mon Sep 17 00:00:00 2001 From: jianjun Date: Fri, 4 Mar 2022 17:10:27 +0800 Subject: [PATCH 091/115] =?UTF-8?q?=E5=8E=BB=E6=8E=89=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/model/ImportNeighborHoodInfoListener.java | 1 - .../java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java | 2 -- 2 files changed, 3 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportNeighborHoodInfoListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportNeighborHoodInfoListener.java index 791e3b6741..2e326c20f0 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportNeighborHoodInfoListener.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportNeighborHoodInfoListener.java @@ -79,7 +79,6 @@ public class ImportNeighborHoodInfoListener extends AnalysisEventListener importTask) { - log.info("neighborhoodImport start====="); executorService.submit(() -> { // importNeighbor(formDTO,file,importTask); log.info("neighborhoodImport thread start====="); @@ -250,7 +249,6 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl Date: Fri, 4 Mar 2022 17:13:38 +0800 Subject: [PATCH 092/115] =?UTF-8?q?=E5=8E=BB=E6=8E=89Async?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/BuildingServiceImpl.java | 52 ++++++++++--------- .../epmet/service/impl/HouseServiceImpl.java | 52 ++++++++++--------- 2 files changed, 56 insertions(+), 48 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java index 091ef5dd1e..f598fae562 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java @@ -58,6 +58,7 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.InputStream; import java.util.*; +import java.util.concurrent.ExecutorService; import java.util.function.Function; import java.util.stream.Collectors; @@ -95,6 +96,8 @@ public class BuildingServiceImpl implements BuildingService { private IcNeighborHoodService neighborHoodService; @Autowired private EpmetCommonServiceOpenFeignClient epmetCommonServiceOpenFeignClient; + @Autowired + private ExecutorService executorService; @Override @Transactional(rollbackFor = Exception.class) @@ -403,33 +406,34 @@ public class BuildingServiceImpl implements BuildingService { * @date 2022/2/13 10:15 上午 */ @Override - @Async public Result buildingImportExcel(ImportInfoFormDTO formDTO, MultipartFile file,Result importTask) throws IOException { - ExcelReader excelReader = null; - try { - InputStream inputStream = null; + executorService.submit(() -> { + ExcelReader excelReader = null; try { - inputStream = file.getInputStream(); - } catch (IOException e) { - return new Result().error("读取文件失败"); - } - excelReader = EasyExcel.read(inputStream).build(); - // 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener - ReadSheet readSheet = EasyExcel.readSheet(0).head(BuildingInfoModel.class) - .registerReadListener(new ImportBuildingInfoListener(formDTO,icHouseRedis,icBuildingDao,neighborHoodService,epmetCommonServiceOpenFeignClient,importTask.getData().getTaskId())) - .build(); - excelReader.read(readSheet); - } catch (Exception e){ - ImportTaskCommonFormDTO input = new ImportTaskCommonFormDTO(); - input.setOperatorId(formDTO.getUserId()); - input.setTaskId(importTask.getData().getTaskId()); - input.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL); - epmetCommonServiceOpenFeignClient.finishImportTask(input); - } finally { - if (excelReader != null) { - excelReader.finish(); + InputStream inputStream = null; + try { + inputStream = file.getInputStream(); + } catch (IOException e) { + log.error("读取文件失败"); + } + excelReader = EasyExcel.read(inputStream).build(); + // 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener + ReadSheet readSheet = EasyExcel.readSheet(0).head(BuildingInfoModel.class) + .registerReadListener(new ImportBuildingInfoListener(formDTO,icHouseRedis,icBuildingDao,neighborHoodService,epmetCommonServiceOpenFeignClient,importTask.getData().getTaskId())) + .build(); + excelReader.read(readSheet); + } catch (Exception e){ + ImportTaskCommonFormDTO input = new ImportTaskCommonFormDTO(); + input.setOperatorId(formDTO.getUserId()); + input.setTaskId(importTask.getData().getTaskId()); + input.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL); + epmetCommonServiceOpenFeignClient.finishImportTask(input); + } finally { + if (excelReader != null) { + excelReader.finish(); + } } - } + }); return new Result<>(); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java index 6130bd49c1..84f46de18a 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java @@ -65,6 +65,7 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.InputStream; import java.util.*; +import java.util.concurrent.ExecutorService; import java.util.stream.Collectors; @Slf4j @@ -97,6 +98,8 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver { private IcNeighborHoodService neighborHoodService; @Autowired private EpmetCommonServiceOpenFeignClient epmetCommonServiceOpenFeignClient; + @Autowired + private ExecutorService executorService; @@ -351,34 +354,35 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver { return result; } - @Async @Override public Result dispose(MultipartFile file, ImportInfoFormDTO formDTO, Result importTask) { - ExcelReader excelReader = null; - try { - InputStream inputStream = null; + executorService.submit(() -> { + ExcelReader excelReader = null; try { - inputStream = file.getInputStream(); - } catch (IOException e) { - return new Result().error("读取文件失败"); - } - excelReader = EasyExcel.read(inputStream).build(); - // 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener - ReadSheet readSheet = EasyExcel.readSheet(0).head(HouseInfoModel.class) - .registerReadListener(new ImportHouseInfoListener(formDTO,icBuildingDao,icHouseRedis,neighborHoodService,icHouseService,epmetCommonServiceOpenFeignClient,importTask.getData().getTaskId())) - .build(); - excelReader.read(readSheet); - } catch (Exception e){ - ImportTaskCommonFormDTO input = new ImportTaskCommonFormDTO(); - input.setOperatorId(formDTO.getUserId()); - input.setTaskId(importTask.getData().getTaskId()); - input.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL); - epmetCommonServiceOpenFeignClient.finishImportTask(input); - } finally { - if (excelReader != null) { - excelReader.finish(); + InputStream inputStream = null; + try { + inputStream = file.getInputStream(); + } catch (IOException e) { + log.error("读取文件失败"); + } + excelReader = EasyExcel.read(inputStream).build(); + // 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener + ReadSheet readSheet = EasyExcel.readSheet(0).head(HouseInfoModel.class) + .registerReadListener(new ImportHouseInfoListener(formDTO,icBuildingDao,icHouseRedis,neighborHoodService,icHouseService,epmetCommonServiceOpenFeignClient,importTask.getData().getTaskId())) + .build(); + excelReader.read(readSheet); + } catch (Exception e){ + ImportTaskCommonFormDTO input = new ImportTaskCommonFormDTO(); + input.setOperatorId(formDTO.getUserId()); + input.setTaskId(importTask.getData().getTaskId()); + input.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL); + epmetCommonServiceOpenFeignClient.finishImportTask(input); + } finally { + if (excelReader != null) { + excelReader.finish(); + } } - } + }); return new Result(); } } From cf0c1ca254dafda46ddde03b6ef9f40dea2a1cd7 Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Fri, 4 Mar 2022 21:05:16 +0800 Subject: [PATCH 093/115] =?UTF-8?q?=E5=B1=85=E6=B0=91=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E5=AF=BC=E5=85=A5=EF=BC=9A=E5=A2=9E=E5=8A=A0=E8=B0=83=E8=AF=95?= =?UTF-8?q?=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/epmet/controller/IcResiUserController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java index 0c3adbb8fa..d3009cf3a2 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java @@ -470,8 +470,8 @@ public class IcResiUserController implements ResultDataResolver { try { // 睡眠2秒钟,等待主线程先结束,主线程会清空request对象的headers,等他执行了清空之后,我们这边再手动setHeader进去 - Thread.sleep(2000l); - System.out.println("请求头:" + headers); + Thread.sleep(3000l); + log.info("请求头:" + headers); } catch (InterruptedException e) { String errorMsg = ExceptionUtils.getErrorStackTrace(e); log.error("【上传居民信息】失败,睡眠2s发生中断:{}", errorMsg); From e22fb90726b4abe87d14f7e05642db8042a5baf6 Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Fri, 4 Mar 2022 21:06:21 +0800 Subject: [PATCH 094/115] =?UTF-8?q?=E5=B1=85=E6=B0=91=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E5=AF=BC=E5=85=A5=EF=BC=9A=E5=A2=9E=E5=8A=A0=E8=B0=83=E8=AF=95?= =?UTF-8?q?=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/epmet/controller/IcResiUserController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java index d3009cf3a2..b7f737098f 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java @@ -471,7 +471,7 @@ public class IcResiUserController implements ResultDataResolver { try { // 睡眠2秒钟,等待主线程先结束,主线程会清空request对象的headers,等他执行了清空之后,我们这边再手动setHeader进去 Thread.sleep(3000l); - log.info("请求头:" + headers); + log.info("【上传居民信息】子线程请求头:" + headers); } catch (InterruptedException e) { String errorMsg = ExceptionUtils.getErrorStackTrace(e); log.error("【上传居民信息】失败,睡眠2s发生中断:{}", errorMsg); From e03798ac3e68f315d45b577a3ca35751f7353e82 Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Fri, 4 Mar 2022 22:37:21 +0800 Subject: [PATCH 095/115] =?UTF-8?q?=E8=B0=83=E8=AF=95=EF=BC=9A=E5=B1=85?= =?UTF-8?q?=E6=B0=91=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tools/feign/ResultDataResolver.java | 6 +++++- .../impl/IcResiUserImportServiceImpl.java | 18 +++++++++++------- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/ResultDataResolver.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/ResultDataResolver.java index 8a9bc6ad80..c7da43dc5b 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/ResultDataResolver.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/ResultDataResolver.java @@ -1,5 +1,6 @@ package com.epmet.commons.tools.feign; +import com.alibaba.fastjson.JSON; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.exception.RenException; @@ -13,6 +14,8 @@ import org.slf4j.LoggerFactory; */ public interface ResultDataResolver { + Logger logger = LoggerFactory.getLogger(ResultDataResolver.class); + /** * @Description 获取Result种的data,如果失败(返回result为null或者result.success为false),那么返回null * @return data数据 @@ -20,7 +23,6 @@ public interface ResultDataResolver { * @date 2021.06.07 22:45 */ default R getResultDataOrReturnNull(Result result, String targetServiceName) { - Logger logger = LoggerFactory.getLogger(ResultDataResolver.class); if (result == null) { logger.error("调用{}服务发生错误,返回Result为null", targetServiceName); return null; @@ -56,6 +58,8 @@ public interface ResultDataResolver { }*/ if (!result.success()) { + String j = JSON.toJSONString(result); + logger.info("远程调用出错,返回结果:{}", j); // 如果不通过参数指定code,则默认使用8000服务器开小差 Integer finalErrorCode = errorCode == null ? EpmetErrorCode.SERVER_ERROR.getCode() : errorCode; diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java index 414a077729..0a0e184d18 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java @@ -221,15 +221,17 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res String loginUserApp = loginUserUtil.getLoginUserApp(); String loginUserClient = loginUserUtil.getLoginUserClient(); - LoginUserDetailsFormDTO userForm = new LoginUserDetailsFormDTO(); - userForm.setApp(loginUserApp); - userForm.setClient(loginUserClient); - userForm.setUserId(loginUserId); +// LoginUserDetailsFormDTO userForm = new LoginUserDetailsFormDTO(); +// userForm.setApp(loginUserApp); +// userForm.setClient(loginUserClient); +// userForm.setUserId(loginUserId); String currUserAgencyId = userService.getLoginUserDetails( - loginUserUtil.getLoginUserApp(), - loginUserUtil.getLoginUserClient(), - loginUserUtil.getLoginUserId()).getAgencyId(); + loginUserApp, + loginUserClient, + loginUserId).getAgencyId(); + + log.info("userId:{}, app:{}, client:{}, currUserAgencyId:{}", loginUserId, loginUserApp, loginUserClient, currUserAgencyId); CustomerAgencyDTO agencyInfo = getResultDataOrThrowsException(govOrgOpenFeignClient.getAgencyById(currUserAgencyId), ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), null, null); String customerId = agencyInfo.getCustomerId(); @@ -991,6 +993,8 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res List options = null; + log.info("optionsUrl:{}, currUserAgencyId:{}", pureUri, currUserAgencyId); + switch (pureUri) { case "/epmetuser/icresidemanddict/demandoption": options = getResultDataOrThrowsException(epmetUserOpenFeignClient.getDemandOptions(), ServiceConstant.EPMET_USER_SERVER, From 054ba84f1d5f02b859f800a5321516ab22827a09 Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Fri, 4 Mar 2022 22:58:34 +0800 Subject: [PATCH 096/115] =?UTF-8?q?=E8=B0=83=E8=AF=95=EF=BC=9A=E5=B1=85?= =?UTF-8?q?=E6=B0=91=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/service/impl/IcResiUserImportServiceImpl.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java index 0a0e184d18..56b049bf3b 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java @@ -221,7 +221,9 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res String loginUserApp = loginUserUtil.getLoginUserApp(); String loginUserClient = loginUserUtil.getLoginUserClient(); -// LoginUserDetailsFormDTO userForm = new LoginUserDetailsFormDTO(); + log.info("userId:{}, app:{}, client:{}", loginUserId, loginUserApp, loginUserClient); + + // LoginUserDetailsFormDTO userForm = new LoginUserDetailsFormDTO(); // userForm.setApp(loginUserApp); // userForm.setClient(loginUserClient); // userForm.setUserId(loginUserId); @@ -231,7 +233,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res loginUserClient, loginUserId).getAgencyId(); - log.info("userId:{}, app:{}, client:{}, currUserAgencyId:{}", loginUserId, loginUserApp, loginUserClient, currUserAgencyId); + log.info("currUserAgencyId:{}", currUserAgencyId); CustomerAgencyDTO agencyInfo = getResultDataOrThrowsException(govOrgOpenFeignClient.getAgencyById(currUserAgencyId), ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), null, null); String customerId = agencyInfo.getCustomerId(); From 7791c3285c6e44e0376a8029c67c7a4778f0e344 Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Fri, 4 Mar 2022 23:20:38 +0800 Subject: [PATCH 097/115] =?UTF-8?q?=E8=B0=83=E8=AF=95=EF=BC=9A=E5=B1=85?= =?UTF-8?q?=E6=B0=91=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/controller/IcResiUserController.java | 6 +++++- .../service/impl/IcResiUserImportServiceImpl.java | 12 ++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java index b7f737098f..9fd05b7f72 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java @@ -88,6 +88,7 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.util.*; import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutorService; import java.util.stream.Collectors; @@ -130,6 +131,8 @@ public class IcResiUserController implements ResultDataResolver { private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient; @Autowired private LoginUserUtil loginUserUtil; + @Autowired + private ExecutorService executorService; /** * 模板枚举 @@ -466,7 +469,8 @@ public class IcResiUserController implements ResultDataResolver { HashMap headers = getHeadersFromRequest(request); // 三.异步执行导入 - CompletableFuture.runAsync(() -> { + + executorService.execute(() -> { try { // 睡眠2秒钟,等待主线程先结束,主线程会清空request对象的headers,等他执行了清空之后,我们这边再手动setHeader进去 diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java index 56b049bf3b..c88815c47b 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java @@ -220,8 +220,9 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res String loginUserId = loginUserUtil.getLoginUserId(); String loginUserApp = loginUserUtil.getLoginUserApp(); String loginUserClient = loginUserUtil.getLoginUserClient(); + String loginUserCustomerId = loginUserUtil.getLoginUserCustomerId(); - log.info("userId:{}, app:{}, client:{}", loginUserId, loginUserApp, loginUserClient); + log.info("userId:{}, app:{}, client:{}, customerId:{}", loginUserId, loginUserApp, loginUserClient, loginUserCustomerId); // LoginUserDetailsFormDTO userForm = new LoginUserDetailsFormDTO(); // userForm.setApp(loginUserApp); @@ -420,6 +421,13 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res String currUserAgencyId, Map checkBoxOptionColumnIdxAndLabel, String currUserAgencyPids, String currentUserId, String tableName) { + String loginUserId = loginUserUtil.getLoginUserId(); + String loginUserApp = loginUserUtil.getLoginUserApp(); + String loginUserClient = loginUserUtil.getLoginUserClient(); + String loginUserCustomerId = loginUserUtil.getLoginUserCustomerId(); + + log.info("persistIcResiBaseInfo:: userId:{}, app:{}, client:{}, customerId:{}", loginUserId, loginUserApp, loginUserClient, loginUserCustomerId); + // 遍历每一行,将行内容转化为 for (Map row : dataRows) { @@ -475,7 +483,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res columnAndValues.put("AGENCY_ID", currUserAgencyId); columnAndValues.put("PIDS", currUserAgencyPids); - columnAndValues.put("CUSTOMER_ID", loginUserUtil.getLoginUserCustomerId()); + columnAndValues.put("CUSTOMER_ID", loginUserCustomerId); columnAndValues.put("UPDATED_BY", currentUserId); From 90c1ab458e226b2ebd6bb9791290e2916417ae4c Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Sat, 5 Mar 2022 00:03:13 +0800 Subject: [PATCH 098/115] =?UTF-8?q?=E8=B0=83=E8=AF=95=EF=BC=9A=E5=B1=85?= =?UTF-8?q?=E6=B0=91=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/IcResiUserImportServiceImpl.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java index c88815c47b..6568f35cdb 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java @@ -222,7 +222,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res String loginUserClient = loginUserUtil.getLoginUserClient(); String loginUserCustomerId = loginUserUtil.getLoginUserCustomerId(); - log.info("userId:{}, app:{}, client:{}, customerId:{}", loginUserId, loginUserApp, loginUserClient, loginUserCustomerId); + log.info("importIcResiInfoFromExcel:: userId:{}, app:{}, client:{}, customerId:{}", loginUserId, loginUserApp, loginUserClient, loginUserCustomerId); // LoginUserDetailsFormDTO userForm = new LoginUserDetailsFormDTO(); // userForm.setApp(loginUserApp); @@ -234,7 +234,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res loginUserClient, loginUserId).getAgencyId(); - log.info("currUserAgencyId:{}", currUserAgencyId); + log.info("importIcResiInfoFromExcel:: currUserAgencyId:{}", currUserAgencyId); CustomerAgencyDTO agencyInfo = getResultDataOrThrowsException(govOrgOpenFeignClient.getAgencyById(currUserAgencyId), ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), null, null); String customerId = agencyInfo.getCustomerId(); @@ -369,6 +369,13 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res private void importIcResiBaseInfoFromExcel(List formItemList, String excelPathName, int sheetNo, int headRowNumber, String currUserAgencyId, String currUserAgencyPids, String currentUserId, String tableName, String customerId) { + String loginUserId = loginUserUtil.getLoginUserId(); + String loginUserApp = loginUserUtil.getLoginUserApp(); + String loginUserClient = loginUserUtil.getLoginUserClient(); + String loginUserCustomerId = loginUserUtil.getLoginUserCustomerId(); + + log.info("importIcResiBaseInfoFromExcel:: userId:{}, app:{}, client:{}, customerId:{}", loginUserId, loginUserApp, loginUserClient, loginUserCustomerId); + IcResiImportDynamicExcelListener readListener = new IcResiImportDynamicExcelListener(this, customerId, currentUserId, currUserAgencyId, currUserAgencyPids, true, tableName, formItemList, headRowNumber); EasyExcel.read(new File(excelPathName)).registerReadListener(readListener).headRowNumber(headRowNumber).sheet(sheetNo).doRead(); From f128557851e39e7319451ec128c49e4d6e8b9650 Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Sat, 5 Mar 2022 00:34:16 +0800 Subject: [PATCH 099/115] =?UTF-8?q?=E8=B0=83=E8=AF=95=EF=BC=9A=E5=B1=85?= =?UTF-8?q?=E6=B0=91=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/IcResiUserImportServiceImpl.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java index 6568f35cdb..cd6000ef0a 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java @@ -243,6 +243,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res initImportThreadLocal(customerId); // 上传主表信息 + log.info("======开始导入基础信息======="); importIcResiBaseInfoFromExcel(formItemList,excelPathName, IcResiUserTableEnum.IC_RESI_USER.getSheetNo(), IcResiUserTableEnum.IC_RESI_USER.getHeadRowNo(), currUserAgencyId, agencyInfo.getPids(), loginUserId, IcResiUserTableEnum.IC_RESI_USER.getTableName(), customerId); @@ -254,6 +255,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res } try { + log.info("======开始导入附加表:{}=======", sheet.getTableComment()); importIcResiExtraInfoFromExcel(formItemList, excelPathName, sheet, currUserAgencyId, loginUserId, customerId); } catch (Exception e) { String errorMsg = ExceptionUtils.getErrorStackTrace(e); @@ -560,6 +562,13 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res LinkedHashMap columnAndValues = new LinkedHashMap<>(); + String loginUserId = loginUserUtil.getLoginUserId(); + String loginUserApp = loginUserUtil.getLoginUserApp(); + String loginUserClient = loginUserUtil.getLoginUserClient(); + String loginUserCustomerId = loginUserUtil.getLoginUserCustomerId(); + + log.info("persistIcResiBaseInfo:: userId:{}, app:{}, client:{}, customerId:{}", loginUserId, loginUserApp, loginUserClient, loginUserCustomerId); + // 遍历每一行,将行内容转化为 for (Map row : dataRows) { @@ -586,7 +595,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res String icResiId = existResiInfoMap.get("ID"); columnAndValues.put("IC_RESI_USER", icResiId); - columnAndValues.put("CUSTOMER_ID", loginUserUtil.getLoginUserCustomerId()); + columnAndValues.put("CUSTOMER_ID", loginUserCustomerId); columnAndValues.put("UPDATED_BY", currentUserId); // 移除excel中存在,但是数据库表中不存在的无效列,方式sql语法错误 From df768ceddce4f2d85f91e14dbba1ee40a86ed96f Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Sat, 5 Mar 2022 01:17:43 +0800 Subject: [PATCH 100/115] =?UTF-8?q?=E8=B0=83=E8=AF=95=EF=BC=9A=E5=B1=85?= =?UTF-8?q?=E6=B0=91=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handler/IcResiImportDynamicExcelListener.java | 11 +++++++++++ .../service/impl/IcResiUserImportServiceImpl.java | 11 ++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcResiImportDynamicExcelListener.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcResiImportDynamicExcelListener.java index 427e70f0a3..b390d10a39 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcResiImportDynamicExcelListener.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcResiImportDynamicExcelListener.java @@ -122,12 +122,18 @@ public class IcResiImportDynamicExcelListener extends AnalysisEventListener> headers = icResiUserImportService.mergeMultiLevelHeadLabels(headList); + icResiUserImportService.printLog("invokeHeadMap_1_" + isPrimary); + // 清洗表头数据,通过items剔除,并且得到options abandonedHeaders = icResiUserImportService.removeAndGetOptionsFromHeaders(headers, formItemList); + icResiUserImportService.printLog("invokeHeadMap_2_" + isPrimary); + // 交换表头信息,以label连起来的string作为key,列号的列表作为value HashMap> combinedHeaders = icResiUserImportService.exchangeKeyAndValueOfHeaders(headers); + icResiUserImportService.printLog("invokeHeadMap_3_" + isPrimary); + // 得到客户配置item数据。<"兴趣爱好:兴趣特长", item对象> Map customizedLabelCompbinedItemsMap = formItemList.stream().collect( Collectors.toMap(formItem -> { @@ -141,7 +147,11 @@ public class IcResiImportDynamicExcelListener extends AnalysisEventListener formItem) ); + icResiUserImportService.printLog("invokeHeadMap_4_" + isPrimary); + itemIdAndColumnWrapper = icResiUserImportService.convertExcelHeaders2DBColumnWrappers(customizedLabelCompbinedItemsMap, combinedHeaders); + + icResiUserImportService.printLog("invokeHeadMap_5_" + isPrimary); } /** @@ -172,6 +182,7 @@ public class IcResiImportDynamicExcelListener extends AnalysisEventListener row : dataRows) { @@ -1838,4 +1838,13 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res importTaskId, processStatus, operatorId, resultDesc, resultDescPath); } } + + public void printLog(String positionPrefix) { + String loginUserId = loginUserUtil.getLoginUserId(); + String loginUserApp = loginUserUtil.getLoginUserApp(); + String loginUserClient = loginUserUtil.getLoginUserClient(); + String loginUserCustomerId = loginUserUtil.getLoginUserCustomerId(); + + log.info("{}:: userId:{}, app:{}, client:{}, customerId:{}", positionPrefix, loginUserId, loginUserApp, loginUserClient, loginUserCustomerId); + } } From 8d4657f60e3115ba852a6bf1c136adc87b50bf0c Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Sat, 5 Mar 2022 17:37:03 +0800 Subject: [PATCH 101/115] =?UTF-8?q?=E4=B8=B4=E6=97=B6=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=E5=BC=82=E6=AD=A5=E6=83=85=E5=86=B5=E4=B8=8B=EF=BC=8C=E4=B8=BB?= =?UTF-8?q?=E7=BA=BF=E7=A8=8B=E7=BB=93=E6=9D=9F=EF=BC=8C=E5=AD=90=E7=BA=BF?= =?UTF-8?q?=E7=A8=8Brequest=20header=E8=A2=AB=E6=B8=85=E7=A9=BA=E7=9A=84bu?= =?UTF-8?q?g?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tools/constant/ThreadLocalConstant.java | 7 ++ .../feign/EpmetBaseRequestInterceptor.java | 32 +++++- .../commons/tools/filter/GlobalFilter.java | 1 + .../controller/IcResiUserController.java | 89 +++++---------- .../com/epmet/enums/IcResiUserTableEnum.java | 2 +- .../impl/IcResiUserImportServiceImpl.java | 102 ++++++++---------- 6 files changed, 110 insertions(+), 123 deletions(-) diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/ThreadLocalConstant.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/ThreadLocalConstant.java index 6a2b304cfa..9061c2e8d3 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/ThreadLocalConstant.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/ThreadLocalConstant.java @@ -1,5 +1,7 @@ package com.epmet.commons.tools.constant; +import java.util.Map; + /** * ThreadLocal常亮 */ @@ -19,4 +21,9 @@ public class ThreadLocalConstant { * 用于本次的获取请求参数 */ public static final ThreadLocal requestParam = new ThreadLocal(); + + /** + * 可被子线程继承的,追加的request headers + */ + public static final InheritableThreadLocal> inheritableAdditionalHeaders = new InheritableThreadLocal<>(); } diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/EpmetBaseRequestInterceptor.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/EpmetBaseRequestInterceptor.java index 7fb9822290..f687696494 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/EpmetBaseRequestInterceptor.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/EpmetBaseRequestInterceptor.java @@ -1,5 +1,6 @@ package com.epmet.commons.tools.feign; +import com.epmet.commons.tools.constant.ThreadLocalConstant; import feign.RequestInterceptor; import feign.RequestTemplate; import org.springframework.web.context.request.RequestAttributes; @@ -8,17 +9,38 @@ import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServletRequest; import java.util.Enumeration; +import java.util.HashMap; +import java.util.Map; public class EpmetBaseRequestInterceptor implements RequestInterceptor { @Override public void apply(RequestTemplate template) { - RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes(); - if (requestAttributes == null) { - return; + // 自定义追加的request header,可被子线程继承拷贝 + Map inheritableAdditionalHeaders = ThreadLocalConstant.inheritableAdditionalHeaders.get(); + Map requestHeaders = getHeadersFromRequest(); + + if (requestHeaders != null && requestHeaders.size() > 0) { + for (Map.Entry kv : requestHeaders.entrySet()) { + template.header(kv.getKey(), kv.getValue()); + } + } + + if (inheritableAdditionalHeaders != null && inheritableAdditionalHeaders.size() > 0) { + for (Map.Entry kv : inheritableAdditionalHeaders.entrySet()) { + template.header(kv.getKey(), kv.getValue()); + } } + } + + /** + * 从header里面获取headers + */ + public HashMap getHeadersFromRequest() { + HashMap headers = new HashMap<>(); + RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes(); HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest(); Enumeration headerNames = request.getHeaderNames(); if (headerNames != null) { @@ -27,9 +49,11 @@ public class EpmetBaseRequestInterceptor implements RequestInterceptor { Enumeration values = request.getHeaders(name); while (values.hasMoreElements()) { String value = values.nextElement(); - template.header(name, value); + headers.put(name, value); } } } + + return headers; } } \ No newline at end of file diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/filter/GlobalFilter.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/filter/GlobalFilter.java index fe3dc8a3e9..4aa7beab20 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/filter/GlobalFilter.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/filter/GlobalFilter.java @@ -25,6 +25,7 @@ public class GlobalFilter implements Filter { ThreadLocalConstant.sqlFilter.remove(); ThreadLocalConstant.requirePermissionTl.remove(); ThreadLocalConstant.requestParam.remove(); + ThreadLocalConstant.inheritableAdditionalHeaders.remove(); } } } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java index 9fd05b7f72..e09f7427c5 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java @@ -27,6 +27,7 @@ import com.epmet.commons.tools.aop.NoRepeatSubmit; import com.epmet.commons.tools.constant.Constant; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.StrConstant; +import com.epmet.commons.tools.constant.ThreadLocalConstant; import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; import com.epmet.commons.tools.dto.result.OptionDataResultDTO; import com.epmet.commons.tools.enums.IcFormCodeEnum; @@ -34,6 +35,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.EpmetBaseRequestInterceptor; import com.epmet.commons.tools.feign.ResultDataResolver; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.redis.RedisKeys; @@ -58,6 +60,7 @@ import com.epmet.feign.OperCustomizeOpenFeignClient; import com.epmet.feign.OssFeignClient; import com.epmet.service.IcResiUserImportService; import com.epmet.service.IcResiUserService; +import feign.RequestInterceptor; import jodd.io.FileUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FileUtils; @@ -71,7 +74,6 @@ import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; -import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.support.StandardMultipartHttpServletRequest; @@ -132,7 +134,7 @@ public class IcResiUserController implements ResultDataResolver { @Autowired private LoginUserUtil loginUserUtil; @Autowired - private ExecutorService executorService; + private RequestInterceptor requestInterceptor; /** * 模板枚举 @@ -358,6 +360,7 @@ public class IcResiUserController implements ResultDataResolver { //表数据写入 //通过枚举获取相关表并按照sheetNo排序 List resiTableList = Arrays.stream(IcResiUserTableEnum.values()) + .filter((v) -> v.getSheetNo() != null) .sorted(Comparator.comparing(IcResiUserTableEnum::getSheetNo)) .collect(Collectors.toList()); List> resiResultList = null; @@ -464,27 +467,14 @@ public class IcResiUserController implements ResultDataResolver { throw new RenException("上传失败"); } - HttpServletRequest request = ((StandardMultipartHttpServletRequest)multipartRequest).getRequest(); + HashMap headers = ((EpmetBaseRequestInterceptor) requestInterceptor).getHeadersFromRequest(); - HashMap headers = getHeadersFromRequest(request); + ThreadLocalConstant.inheritableAdditionalHeaders.set(headers); // 三.异步执行导入 - - executorService.execute(() -> { + new Thread(() -> { try { - // 睡眠2秒钟,等待主线程先结束,主线程会清空request对象的headers,等他执行了清空之后,我们这边再手动setHeader进去 - Thread.sleep(3000l); - log.info("【上传居民信息】子线程请求头:" + headers); - } catch (InterruptedException e) { - String errorMsg = ExceptionUtils.getErrorStackTrace(e); - log.error("【上传居民信息】失败,睡眠2s发生中断:{}", errorMsg); - return; - } - - try { - setHeaders2Request(request, headers); - List formItemList = icResiUserService.listFormItems(customerId,IcFormCodeEnum.RESI_BASE_INFO.getCode()); icResiUserImportService.importIcResiInfoFromExcel(importTaskId, formItemList, importTempFileSavePath.toString(), response, IC_RESI_UPLOAD_DIR); } catch (Throwable e) { @@ -502,56 +492,29 @@ public class IcResiUserController implements ResultDataResolver { log.error("【导入居民信息失败】清理上传的文件失败:{}", ExceptionUtils.getErrorStackTrace(e)); } - // 清理request对象 - RequestContextHolder.resetRequestAttributes(); + // 清理tl对象 + ThreadLocalConstant.inheritableAdditionalHeaders.remove(); } - }); + }).start(); return new Result(); } - private HashMap getHeadersFromRequest(HttpServletRequest request) { - HashMap headers = new HashMap<>(); - Enumeration headerNames = request.getHeaderNames(); - if (headerNames != null) { - while (headerNames.hasMoreElements()) { - String name = headerNames.nextElement(); - Enumeration values = request.getHeaders(name); - while (values.hasMoreElements()) { - String value = values.nextElement(); - headers.put(name, value); - } - } - } - return headers; - } - - private void setHeaders2Request(HttpServletRequest request, HashMap headers) { - for (Map.Entry kv : headers.entrySet()) { - setParam2Header(request, kv.getKey(), kv.getValue()); - } - } - - private void setParam2Header(HttpServletRequest requestFacade, String key, String value){ - Class requestFacadeClass = requestFacade.getClass(); - try { - Field requestField = requestFacadeClass.getDeclaredField("request"); - requestField.setAccessible(true); - Object requestObject = requestField.get(requestFacade); - - Field coyoteRequestField = requestObject.getClass().getDeclaredField("coyoteRequest"); - coyoteRequestField.setAccessible(true); - Object coyoteRequestObject = coyoteRequestField.get(requestObject); - - Field headers = coyoteRequestObject.getClass().getDeclaredField("headers"); - headers.setAccessible(true); - MimeHeaders o2 = (MimeHeaders)headers.get(coyoteRequestObject); - o2.addValue(key).setString(value); - } catch (Exception e) { - e.printStackTrace(); - log.error("为子线程设置请求头出错"); - } - } +// private HashMap getHeadersFromRequest(HttpServletRequest request) { +// HashMap headers = new HashMap<>(); +// Enumeration headerNames = request.getHeaderNames(); +// if (headerNames != null) { +// while (headerNames.hasMoreElements()) { +// String name = headerNames.nextElement(); +// Enumeration values = request.getHeaders(name); +// while (values.hasMoreElements()) { +// String value = values.nextElement(); +// headers.put(name, value); +// } +// } +// } +// return headers; +// } @PostMapping("test") public Result>> test(@LoginUser TokenDto tokenDto, @RequestBody DynamicQueryFormDTO formDTO) { diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/enums/IcResiUserTableEnum.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/enums/IcResiUserTableEnum.java index 5bb46b6369..0490c50c5c 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/enums/IcResiUserTableEnum.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/enums/IcResiUserTableEnum.java @@ -89,7 +89,7 @@ public enum IcResiUserTableEnum { return tableComment; } - public int getSheetNo() { + public Integer getSheetNo() { return sheetNo; } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java index d0416409c8..7972ddbeef 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java @@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.epmet.bean.ResiImportCategoryData; import com.epmet.bean.ResiImportResiCategoryChangedCache; import com.epmet.bean.ResiImportChangedData; +import com.epmet.commons.tools.constant.AppClientConstant; import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.constant.ThreadLocalConstant; @@ -23,7 +24,6 @@ import com.epmet.commons.tools.feign.ResultDataResolver; import com.epmet.commons.tools.redis.RedisKeys; import com.epmet.commons.tools.redis.RedisUtils; import com.epmet.commons.tools.redis.common.CustomerStaffRedis; -import com.epmet.commons.tools.security.user.LoginUserUtil; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.constants.ImportTaskConstants; @@ -103,10 +103,6 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res */ Cache>> itemIdAndOptionsCache = CacheBuilder.newBuilder().maximumSize(500).build(); - - @Autowired - private LoginUserUtil loginUserUtil; - @Autowired private EpmetUserOpenFeignClient epmetUserOpenFeignClient; @@ -217,22 +213,11 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res @Override public void importIcResiInfoFromExcel(String importTaskId, List formItemList, String excelPathName, HttpServletResponse response, Path importTempPath) { - String loginUserId = loginUserUtil.getLoginUserId(); - String loginUserApp = loginUserUtil.getLoginUserApp(); - String loginUserClient = loginUserUtil.getLoginUserClient(); - String loginUserCustomerId = loginUserUtil.getLoginUserCustomerId(); - - log.info("importIcResiInfoFromExcel:: userId:{}, app:{}, client:{}, customerId:{}", loginUserId, loginUserApp, loginUserClient, loginUserCustomerId); + String app = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.APP); + String client = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.CLIENT); + String loginUserId = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.USER_ID.toLowerCase()); - // LoginUserDetailsFormDTO userForm = new LoginUserDetailsFormDTO(); -// userForm.setApp(loginUserApp); -// userForm.setClient(loginUserClient); -// userForm.setUserId(loginUserId); - - String currUserAgencyId = userService.getLoginUserDetails( - loginUserApp, - loginUserClient, - loginUserId).getAgencyId(); + String currUserAgencyId = userService.getLoginUserDetails(app, client, loginUserId).getAgencyId(); log.info("importIcResiInfoFromExcel:: currUserAgencyId:{}", currUserAgencyId); @@ -331,7 +316,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res */ private void initImportThreadLocal(String customerId) { // 生成importTag,用于标记唯一一次导入操作,导入完成之后,用来删除redis里面临时的key - String operatorId = loginUserUtil.getLoginUserId(); + String operatorId = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.USER_ID.toLowerCase()); String importTag = operatorId + System.currentTimeMillis(); // 错误信息 @@ -371,10 +356,10 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res private void importIcResiBaseInfoFromExcel(List formItemList, String excelPathName, int sheetNo, int headRowNumber, String currUserAgencyId, String currUserAgencyPids, String currentUserId, String tableName, String customerId) { - String loginUserId = loginUserUtil.getLoginUserId(); - String loginUserApp = loginUserUtil.getLoginUserApp(); - String loginUserClient = loginUserUtil.getLoginUserClient(); - String loginUserCustomerId = loginUserUtil.getLoginUserCustomerId(); + String loginUserApp = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.APP); + String loginUserClient = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.CLIENT); + String loginUserId = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.USER_ID.toLowerCase()); + String loginUserCustomerId = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.CUSTOMER_ID.toLowerCase()); log.info("importIcResiBaseInfoFromExcel:: userId:{}, app:{}, client:{}, customerId:{}", loginUserId, loginUserApp, loginUserClient, loginUserCustomerId); @@ -430,10 +415,10 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res String currUserAgencyId, Map checkBoxOptionColumnIdxAndLabel, String currUserAgencyPids, String currentUserId, String tableName) { - String loginUserId = loginUserUtil.getLoginUserId(); - String loginUserApp = loginUserUtil.getLoginUserApp(); - String loginUserClient = loginUserUtil.getLoginUserClient(); - String loginUserCustomerId = loginUserUtil.getLoginUserCustomerId(); + String loginUserApp = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.APP); + String loginUserClient = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.CLIENT); + String loginUserId = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.USER_ID.toLowerCase()); + String loginUserCustomerId = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.USER_ID.toLowerCase()); log.info("persistIcResiBaseInfo:: userId:{}, app:{}, client:{}, customerId:{}", loginUserId, loginUserApp, loginUserClient, loginUserCustomerId); @@ -562,10 +547,10 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res LinkedHashMap columnAndValues = new LinkedHashMap<>(); - String loginUserId = loginUserUtil.getLoginUserId(); - String loginUserApp = loginUserUtil.getLoginUserApp(); - String loginUserClient = loginUserUtil.getLoginUserClient(); - String loginUserCustomerId = loginUserUtil.getLoginUserCustomerId(); + String loginUserApp = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.APP); + String loginUserClient = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.CLIENT); + String loginUserId = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.USER_ID.toLowerCase()); + String loginUserCustomerId = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.CUSTOMER_ID.toLowerCase()); log.info("persistIcResiExtraInfo:: userId:{}, app:{}, client:{}, customerId:{}", loginUserId, loginUserApp, loginUserClient, loginUserCustomerId); @@ -1297,7 +1282,10 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res Date now = new Date(); - CustomerStaffInfoCacheResult operator = CustomerStaffRedis.getStaffInfo(loginUserUtil.getLoginUserCustomerId(), loginUserUtil.getLoginUserId()); + String customerId = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.CUSTOMER_ID.toLowerCase()); + String userId = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.USER_ID.toLowerCase()); + + CustomerStaffInfoCacheResult operator = CustomerStaffRedis.getStaffInfo(customerId, userId); for (Map.Entry entry : categoryChangedResis.entrySet()) { String resiId = entry.getKey(); @@ -1326,7 +1314,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res } // 生成changeRecord并存入 - IcUserChangeRecordEntity changeRecord = fillChangeRecord(loginUserUtil.getLoginUserCustomerId(), resiId, resiInfoMap.get("NAME"), null, loginUserUtil.getLoginUserId(), + IcUserChangeRecordEntity changeRecord = fillChangeRecord(customerId, resiId, resiInfoMap.get("NAME"), null, userId, operator.getRealName() , descBefore, descAfter, "category", "类别", "", now); icUserChangeRecordDao.insert(changeRecord); @@ -1346,7 +1334,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res String unitId = newData.getUnitId(); String homeId = newData.getHomeId(); - IcUserChangeDetailedEntity newDetail = fillChangeDetail(loginUserUtil.getLoginUserCustomerId(), resiId, changeRecord.getId(), agencyId, + IcUserChangeDetailedEntity newDetail = fillChangeDetail(customerId, resiId, changeRecord.getId(), agencyId, gridId, villageId, buildId, unitId, homeId, "category", "类别", columnEntry.getKey(), 1, resiInfoMap.get("PIDS")); @@ -1391,7 +1379,10 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res Set newResiKeys = redisUtils.keys(RedisKeys.icResiImportTypeKey(newlyOrChangedResi.get().getImportTag(), "add").concat("*")); - CustomerStaffInfoCacheResult operator = CustomerStaffRedis.getStaffInfo(loginUserUtil.getLoginUserCustomerId(), loginUserUtil.getLoginUserId()); + String customerId = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.CUSTOMER_ID.toLowerCase()); + String userId = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.USER_ID.toLowerCase()); + + CustomerStaffInfoCacheResult operator = CustomerStaffRedis.getStaffInfo(customerId, userId); for (String resiKey : newResiKeys) { Map newResiInfoMap = redisUtils.hGetAll(resiKey); @@ -1400,14 +1391,14 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res IcResiUserEntity resiInfo = icResiUserDao.selectById(newResiInfoObj.getResiId()); // 插入changeRecord - IcUserChangeRecordEntity changeRecord = fillChangeRecord(loginUserUtil.getLoginUserCustomerId(), newResiInfoObj.getResiId(), resiInfo.getName(), null, - loginUserUtil.getLoginUserId(), operator.getRealName(), "-", "-", + IcUserChangeRecordEntity changeRecord = fillChangeRecord(customerId, newResiInfoObj.getResiId(), resiInfo.getName(), null, + userId, operator.getRealName(), "-", "-", "add", "新增", "", now); icUserChangeRecordDao.insert(changeRecord); // 插入changeDetail for (Map.Entry mainTableColumn : newResiInfoObj.getCategories().entrySet()) { - IcUserChangeDetailedEntity changedetail = fillChangeDetail(loginUserUtil.getLoginUserCustomerId(), newResiInfoObj.getResiId(), changeRecord.getId(), newResiInfoObj.getAgencyId(), + IcUserChangeDetailedEntity changedetail = fillChangeDetail(customerId, newResiInfoObj.getResiId(), changeRecord.getId(), newResiInfoObj.getAgencyId(), newResiInfoObj.getGridId(), newResiInfoObj.getVillageId(), newResiInfoObj.getBuildId(), newResiInfoObj.getUnitId(), newResiInfoObj.getHomeId(), "add", "新增", mainTableColumn.getKey(), 1, resiInfo.getPids()); @@ -1426,8 +1417,9 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res */ public void saveTransferedResiRecord(Map transferedResis) { Date now = new Date(); - String customerId = loginUserUtil.getLoginUserCustomerId(); - CustomerStaffInfoCacheResult operator = CustomerStaffRedis.getStaffInfo(customerId, loginUserUtil.getLoginUserId()); + String loginUserId = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.USER_ID.toLowerCase()); + String loginUserCustomerId = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.CUSTOMER_ID.toLowerCase()); + CustomerStaffInfoCacheResult operator = CustomerStaffRedis.getStaffInfo(loginUserCustomerId, loginUserId); for (Map.Entry resi : transferedResis.entrySet()) { @@ -1460,7 +1452,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res String newHomeId = newData.getHomeId(); IcResiUserOrgMsgFormDTO oldOrgFormDTO = new IcResiUserOrgMsgFormDTO(); - oldOrgFormDTO.setCustomerId(customerId); + oldOrgFormDTO.setCustomerId(loginUserCustomerId); oldOrgFormDTO.setAgencyId(oldAgencyId); oldOrgFormDTO.setGridId(oldGridId); oldOrgFormDTO.setNeighborHoodId(oldvillageId); @@ -1470,7 +1462,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res Result oldOrgInfoRst = govOrgOpenFeignClient.icResiUserOrgMsg(oldOrgFormDTO); IcResiUserOrgMsgFormDTO newOrgInfo = new IcResiUserOrgMsgFormDTO(); - newOrgInfo.setCustomerId(customerId); + newOrgInfo.setCustomerId(loginUserCustomerId); newOrgInfo.setAgencyId(newAgencyId); newOrgInfo.setGridId(newGridId); newOrgInfo.setNeighborHoodId(newvillageId); @@ -1540,13 +1532,13 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res } // 保存 transferRecord - IcUserTransferRecordEntity transferRecord = fillTransferRecord(resiId, resiName, operator, customerId, - oldAgencyId, oldGridId, oldvillageId, oldBuildId, oldUnitId, oldHomeId, customerId, + IcUserTransferRecordEntity transferRecord = fillTransferRecord(resiId, resiName, operator, loginUserCustomerId, + oldAgencyId, oldGridId, oldvillageId, oldBuildId, oldUnitId, oldHomeId, loginUserCustomerId, newAgencyId, newGridId, newvillageId, newBuildId, newUnitId, newHomeId, oldOrg, newOrg); icUserTransferRecordDao.insert(transferRecord); // 保存 调动changeRecord - IcUserChangeRecordEntity transferChangeRecord = fillChangeRecord(customerId, resiId, resiName, transferRecord.getId(), operator.getStaffId(), + IcUserChangeRecordEntity transferChangeRecord = fillChangeRecord(loginUserCustomerId, resiId, resiName, transferRecord.getId(), operator.getStaffId(), operator.getRealName(), sbBefore.toString(), sbAfter.toString(), "transfer", "调动", "", now); icUserChangeRecordDao.insert(transferChangeRecord); @@ -1580,7 +1572,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res String categoryDescAfter = sbAfter.toString(); if (!StringUtils.isAllBlank(categoryDescBefore, categoryDescAfter)) { - IcUserChangeRecordEntity categoryChangeRecord = fillChangeRecord(customerId, resiId, resiName, transferRecord.getId(), operator.getStaffId(), + IcUserChangeRecordEntity categoryChangeRecord = fillChangeRecord(loginUserCustomerId, resiId, resiName, transferRecord.getId(), operator.getStaffId(), operator.getRealName(), categoryDescBefore, categoryDescAfter , "category", "类别", "", now); icUserChangeRecordDao.insert(categoryChangeRecord); } @@ -1593,7 +1585,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res // 之前是这个类型,那这个类型需要-1 String oldValue = oldCategories.getValue(); if ("1".equals(oldValue)) { - IcUserChangeDetailedEntity changeDetail = fillChangeDetail(customerId, resiId, transferChangeRecord.getId(), oldAgencyId, + IcUserChangeDetailedEntity changeDetail = fillChangeDetail(loginUserCustomerId, resiId, transferChangeRecord.getId(), oldAgencyId, oldGridId, oldvillageId, oldBuildId, oldUnitId, oldHomeId, transferChangeRecord.getType(), transferChangeRecord.getTypeName(), key, -1, pids); icUserChangeDetailedDao.insert(changeDetail); @@ -1607,7 +1599,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res // 现在是这个类型,这个类型要+1 if ("1".equals(newValue)) { - IcUserChangeDetailedEntity changeDetail = fillChangeDetail(customerId, resiId, transferChangeRecord.getId(), newAgencyId, + IcUserChangeDetailedEntity changeDetail = fillChangeDetail(loginUserCustomerId, resiId, transferChangeRecord.getId(), newAgencyId, newGridId, newvillageId, newBuildId, newUnitId, newHomeId, transferChangeRecord.getType(), transferChangeRecord.getTypeName(), key, 1, pids); icUserChangeDetailedDao.insert(changeDetail); @@ -1840,11 +1832,11 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res } public void printLog(String positionPrefix) { - String loginUserId = loginUserUtil.getLoginUserId(); - String loginUserApp = loginUserUtil.getLoginUserApp(); - String loginUserClient = loginUserUtil.getLoginUserClient(); - String loginUserCustomerId = loginUserUtil.getLoginUserCustomerId(); + String app = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.APP); + String client = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.CLIENT); + String loginUserId = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.USER_ID.toLowerCase()); + String loginUserCustomerId = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.CUSTOMER_ID.toLowerCase()); - log.info("{}:: userId:{}, app:{}, client:{}, customerId:{}", positionPrefix, loginUserId, loginUserApp, loginUserClient, loginUserCustomerId); + log.info("{}:: userId:{}, app:{}, client:{}, customerId:{}", positionPrefix, loginUserId, app, client, loginUserCustomerId); } } From 21d6090c7bfbef506b840f4477884f030534ee7e Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Sun, 6 Mar 2022 00:23:32 +0800 Subject: [PATCH 102/115] =?UTF-8?q?=E8=B0=83=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../feign/EpmetBaseRequestInterceptor.java | 6 +++++ .../tools/feign/ResultDataResolver.java | 26 +++++++++---------- .../impl/IcResiUserImportServiceImpl.java | 15 +++++------ 3 files changed, 26 insertions(+), 21 deletions(-) diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/EpmetBaseRequestInterceptor.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/EpmetBaseRequestInterceptor.java index f687696494..7c6c0cd82d 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/EpmetBaseRequestInterceptor.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/EpmetBaseRequestInterceptor.java @@ -3,6 +3,8 @@ package com.epmet.commons.tools.feign; import com.epmet.commons.tools.constant.ThreadLocalConstant; import feign.RequestInterceptor; import feign.RequestTemplate; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.web.context.request.RequestAttributes; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; @@ -15,12 +17,16 @@ import java.util.Map; public class EpmetBaseRequestInterceptor implements RequestInterceptor { + private static final Logger log = LoggerFactory.getLogger(EpmetBaseRequestInterceptor.class); + @Override public void apply(RequestTemplate template) { // 自定义追加的request header,可被子线程继承拷贝 Map inheritableAdditionalHeaders = ThreadLocalConstant.inheritableAdditionalHeaders.get(); Map requestHeaders = getHeadersFromRequest(); + log.info("EpmetBaseRequestInterceptor#apply#inheritableAdditionalHeaders:{}", inheritableAdditionalHeaders.toString()); + if (requestHeaders != null && requestHeaders.size() > 0) { for (Map.Entry kv : requestHeaders.entrySet()) { template.header(kv.getKey(), kv.getValue()); diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/ResultDataResolver.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/ResultDataResolver.java index c7da43dc5b..07c2df6679 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/ResultDataResolver.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/ResultDataResolver.java @@ -51,24 +51,24 @@ public interface ResultDataResolver { // 考虑到:上游服务抛出的异常代码和错误消息并不一定适用于当前服务,并且上有服务的错误消息弹出之后可能给用户造成困扰, // 因此,当前服务抛出异常的时候,不再继承上游服务返回的错误码和错误消息 - /*if (!result.success()) { + if (!result.success()) { Integer finalErrorCode = errorCode == null ? result.getCode() : errorCode; String finalErrorInternalMsg = StringUtils.isBlank(errorInternalMsg) ? result.getInternalMsg() : errorInternalMsg; throw new RenException(finalErrorCode, finalErrorInternalMsg, showMsg, RenException.MessageMode.CODE_INTERNAL_EXTERNAL); - }*/ - - if (!result.success()) { - String j = JSON.toJSONString(result); - logger.info("远程调用出错,返回结果:{}", j); - - // 如果不通过参数指定code,则默认使用8000服务器开小差 - Integer finalErrorCode = errorCode == null ? EpmetErrorCode.SERVER_ERROR.getCode() : errorCode; - String finalErrorInternalMsg = StringUtils.isBlank(errorInternalMsg) ? "" : errorInternalMsg; - String finalShowMsg = StringUtils.isBlank(showMsg) ? "" : showMsg; - - throw new EpmetException(finalErrorCode, finalErrorInternalMsg, finalShowMsg); } +// if (!result.success()) { +// String j = JSON.toJSONString(result); +// logger.info("远程调用出错,返回结果:{}", j); +// +// // 如果不通过参数指定code,则默认使用8000服务器开小差 +// Integer finalErrorCode = errorCode == null ? EpmetErrorCode.SERVER_ERROR.getCode() : errorCode; +// String finalErrorInternalMsg = StringUtils.isBlank(errorInternalMsg) ? "" : errorInternalMsg; +// String finalShowMsg = StringUtils.isBlank(showMsg) ? "" : showMsg; +// +// throw new EpmetException(finalErrorCode, finalErrorInternalMsg, finalShowMsg); +// } + return result.getData(); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java index 7972ddbeef..62b7dbf697 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java @@ -415,12 +415,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res String currUserAgencyId, Map checkBoxOptionColumnIdxAndLabel, String currUserAgencyPids, String currentUserId, String tableName) { - String loginUserApp = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.APP); - String loginUserClient = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.CLIENT); - String loginUserId = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.USER_ID.toLowerCase()); - String loginUserCustomerId = ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.USER_ID.toLowerCase()); - - log.info("persistIcResiBaseInfo:: userId:{}, app:{}, client:{}, customerId:{}", loginUserId, loginUserApp, loginUserClient, loginUserCustomerId); + this.printLog("persistIcResiBaseInfo"); // 遍历每一行,将行内容转化为 for (Map row : dataRows) { @@ -477,7 +472,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res columnAndValues.put("AGENCY_ID", currUserAgencyId); columnAndValues.put("PIDS", currUserAgencyPids); - columnAndValues.put("CUSTOMER_ID", loginUserCustomerId); + columnAndValues.put("CUSTOMER_ID", ThreadLocalConstant.inheritableAdditionalHeaders.get().get(AppClientConstant.CUSTOMER_ID.toLowerCase())); columnAndValues.put("UPDATED_BY", currentUserId); @@ -1005,7 +1000,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res List options = null; log.info("optionsUrl:{}, currUserAgencyId:{}", pureUri, currUserAgencyId); - + this.printLog("listRemoteOptions"); switch (pureUri) { case "/epmetuser/icresidemanddict/demandoption": options = getResultDataOrThrowsException(epmetUserOpenFeignClient.getDemandOptions(), ServiceConstant.EPMET_USER_SERVER, @@ -1045,6 +1040,10 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res nform.setAgencyId(currUserAgencyId); } nform.setGridId(gridId); + + this.printLog("listRemoteOptions#neighborhoodoption"); + log.info("neighborhoodoption:{},{}", currUserAgencyId, gridId); + options = getResultDataOrThrowsException(govOrgOpenFeignClient.getNeighborHoodOptions(nform), ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), null, null); break; case "/sys/dict/data/education": From 532904489a8298958b5d57c20d7b18447459ffaa Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Sun, 6 Mar 2022 00:38:50 +0800 Subject: [PATCH 103/115] =?UTF-8?q?=E8=B0=83=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/commons/tools/feign/EpmetBaseRequestInterceptor.java | 2 +- epmet-user/epmet-user-server/deploy/docker-compose-prod.yml | 2 +- epmet-user/epmet-user-server/pom.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/EpmetBaseRequestInterceptor.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/EpmetBaseRequestInterceptor.java index 7c6c0cd82d..cb2936ce50 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/EpmetBaseRequestInterceptor.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/EpmetBaseRequestInterceptor.java @@ -25,7 +25,7 @@ public class EpmetBaseRequestInterceptor implements RequestInterceptor { Map inheritableAdditionalHeaders = ThreadLocalConstant.inheritableAdditionalHeaders.get(); Map requestHeaders = getHeadersFromRequest(); - log.info("EpmetBaseRequestInterceptor#apply#inheritableAdditionalHeaders:{}", inheritableAdditionalHeaders.toString()); + log.info("EpmetBaseRequestInterceptor#apply#inheritableAdditionalHeaders:"+inheritableAdditionalHeaders); if (requestHeaders != null && requestHeaders.size() > 0) { for (Map.Entry kv : requestHeaders.entrySet()) { diff --git a/epmet-user/epmet-user-server/deploy/docker-compose-prod.yml b/epmet-user/epmet-user-server/deploy/docker-compose-prod.yml index bc63091248..43808623b4 100644 --- a/epmet-user/epmet-user-server/deploy/docker-compose-prod.yml +++ b/epmet-user/epmet-user-server/deploy/docker-compose-prod.yml @@ -2,7 +2,7 @@ version: "3.7" services: epmet-user-server: container_name: epmet-user-server-prod - image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-user-server:0.3.218 + image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-user-server:0.3.219 ports: - "8087:8087" network_mode: host # 不会创建新的网络 diff --git a/epmet-user/epmet-user-server/pom.xml b/epmet-user/epmet-user-server/pom.xml index 0189ee8ce0..ea68bf40e5 100644 --- a/epmet-user/epmet-user-server/pom.xml +++ b/epmet-user/epmet-user-server/pom.xml @@ -2,7 +2,7 @@ 4.0.0 - 0.3.218 + 0.3.219 com.epmet epmet-user From 429555293f2298b3f8ff713283c91ca2cd817f99 Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Sun, 6 Mar 2022 00:40:42 +0800 Subject: [PATCH 104/115] =?UTF-8?q?=E8=B0=83=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- epmet-user/epmet-user-server/deploy/docker-compose-prod.yml | 2 +- epmet-user/epmet-user-server/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/epmet-user/epmet-user-server/deploy/docker-compose-prod.yml b/epmet-user/epmet-user-server/deploy/docker-compose-prod.yml index 43808623b4..bc63091248 100644 --- a/epmet-user/epmet-user-server/deploy/docker-compose-prod.yml +++ b/epmet-user/epmet-user-server/deploy/docker-compose-prod.yml @@ -2,7 +2,7 @@ version: "3.7" services: epmet-user-server: container_name: epmet-user-server-prod - image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-user-server:0.3.219 + image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-user-server:0.3.218 ports: - "8087:8087" network_mode: host # 不会创建新的网络 diff --git a/epmet-user/epmet-user-server/pom.xml b/epmet-user/epmet-user-server/pom.xml index ea68bf40e5..0189ee8ce0 100644 --- a/epmet-user/epmet-user-server/pom.xml +++ b/epmet-user/epmet-user-server/pom.xml @@ -2,7 +2,7 @@ 4.0.0 - 0.3.219 + 0.3.218 com.epmet epmet-user From c9ae0d499f04dd94bc5a97e1ebe6c05bd8d0adfc Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Sun, 6 Mar 2022 01:19:48 +0800 Subject: [PATCH 105/115] =?UTF-8?q?=E8=B0=83=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../LoginUserHandlerMethodArgumentResolver.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/security/resolver/LoginUserHandlerMethodArgumentResolver.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/security/resolver/LoginUserHandlerMethodArgumentResolver.java index 79ee2d538a..6f7afa97ba 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/security/resolver/LoginUserHandlerMethodArgumentResolver.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/security/resolver/LoginUserHandlerMethodArgumentResolver.java @@ -34,6 +34,8 @@ import org.springframework.web.servlet.HandlerMapping; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; +import java.util.Enumeration; +import java.util.Iterator; import java.util.Map; /** @@ -80,6 +82,16 @@ public class LoginUserHandlerMethodArgumentResolver implements HandlerMethodArgu logger.info("【LoginUserHandlerMethodArgumentResolver】请求uri:{}", requestURI); + // todo delete + Iterator headerNames = request.getHeaderNames(); + if (headerNames != null) { + while (headerNames.hasNext()) { + String name = headerNames.next(); + String[] headerValues = request.getHeaderValues(name); + logger.info("LoginUserHandlerMethodArgumentResolver#resolveArgument:"+headerValues); + } + } + //app-client-userId String redisKey = request.getHeader(Constant.APP_USER_KEY); if (StringUtils.isEmpty(redisKey)) { From 66f22172e86f2412b9ef2c790398a39364620d08 Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Sun, 6 Mar 2022 01:32:27 +0800 Subject: [PATCH 106/115] =?UTF-8?q?=E8=B0=83=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resolver/LoginUserHandlerMethodArgumentResolver.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/security/resolver/LoginUserHandlerMethodArgumentResolver.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/security/resolver/LoginUserHandlerMethodArgumentResolver.java index 6f7afa97ba..cdfc906740 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/security/resolver/LoginUserHandlerMethodArgumentResolver.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/security/resolver/LoginUserHandlerMethodArgumentResolver.java @@ -35,6 +35,7 @@ import org.springframework.web.servlet.HandlerMapping; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import java.util.Enumeration; +import java.util.HashMap; import java.util.Iterator; import java.util.Map; @@ -85,11 +86,15 @@ public class LoginUserHandlerMethodArgumentResolver implements HandlerMethodArgu // todo delete Iterator headerNames = request.getHeaderNames(); if (headerNames != null) { + HashMap hm = new HashMap<>(); while (headerNames.hasNext()) { String name = headerNames.next(); String[] headerValues = request.getHeaderValues(name); - logger.info("LoginUserHandlerMethodArgumentResolver#resolveArgument:"+headerValues); + hm.put(name, String.join(",", headerValues)); } + + logger.info("LoginUserHandlerMethodArgumentResolver#resolveArgument:"+hm); + } //app-client-userId From 5ca90bfc074cb5788bf827bc7db318cec196902b Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Sun, 6 Mar 2022 22:36:09 +0800 Subject: [PATCH 107/115] =?UTF-8?q?=E8=B0=83=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tools/feign/EpmetBaseRequestInterceptor.java | 2 +- .../tools/feign/FeignHystrixConcurrencyStrategy.java | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/EpmetBaseRequestInterceptor.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/EpmetBaseRequestInterceptor.java index cb2936ce50..d19a1145d2 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/EpmetBaseRequestInterceptor.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/EpmetBaseRequestInterceptor.java @@ -22,7 +22,7 @@ public class EpmetBaseRequestInterceptor implements RequestInterceptor { @Override public void apply(RequestTemplate template) { // 自定义追加的request header,可被子线程继承拷贝 - Map inheritableAdditionalHeaders = ThreadLocalConstant.inheritableAdditionalHeaders.get(); + Map inheritableAdditionalHeaders = FeignHystrixConcurrencyStrategy.hystrixAdditionHeaders.get(); Map requestHeaders = getHeadersFromRequest(); log.info("EpmetBaseRequestInterceptor#apply#inheritableAdditionalHeaders:"+inheritableAdditionalHeaders); diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/FeignHystrixConcurrencyStrategy.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/FeignHystrixConcurrencyStrategy.java index 5fef2a246d..0d2998ccd3 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/FeignHystrixConcurrencyStrategy.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/FeignHystrixConcurrencyStrategy.java @@ -1,5 +1,6 @@ package com.epmet.commons.tools.feign; +import com.epmet.commons.tools.constant.ThreadLocalConstant; import com.netflix.hystrix.HystrixThreadPoolKey; import com.netflix.hystrix.HystrixThreadPoolProperties; import com.netflix.hystrix.strategy.HystrixPlugins; @@ -17,6 +18,7 @@ import org.springframework.stereotype.Component; import org.springframework.web.context.request.RequestAttributes; import org.springframework.web.context.request.RequestContextHolder; +import java.util.Map; import java.util.concurrent.BlockingQueue; import java.util.concurrent.Callable; import java.util.concurrent.ThreadPoolExecutor; @@ -35,6 +37,7 @@ import java.util.concurrent.TimeUnit; @Component public class FeignHystrixConcurrencyStrategy extends HystrixConcurrencyStrategy { + public static final ThreadLocal> hystrixAdditionHeaders = new ThreadLocal<>(); private static final Logger log = LoggerFactory.getLogger(FeignHystrixConcurrencyStrategy.class); private HystrixConcurrencyStrategy delegate; @@ -74,8 +77,9 @@ public class FeignHystrixConcurrencyStrategy extends HystrixConcurrencyStrategy @Override public Callable wrapCallable(Callable callable) { + Map inheritableAdditionalHeaders = ThreadLocalConstant.inheritableAdditionalHeaders.get(); RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes(); - return new WrappedCallable<>(callable, requestAttributes); + return new WrappedCallable<>(callable, requestAttributes, inheritableAdditionalHeaders); } @Override @@ -105,15 +109,18 @@ public class FeignHystrixConcurrencyStrategy extends HystrixConcurrencyStrategy static class WrappedCallable implements Callable { private final Callable target; private final RequestAttributes requestAttributes; + private final Map inheritableAdditionalHeaders; - public WrappedCallable(Callable target, RequestAttributes requestAttributes) { + public WrappedCallable(Callable target, RequestAttributes requestAttributes, Map inheritableAdditionalHeaders) { this.target = target; this.requestAttributes = requestAttributes; + this.inheritableAdditionalHeaders = inheritableAdditionalHeaders; } @Override public T call() throws Exception { try { + hystrixAdditionHeaders.set(inheritableAdditionalHeaders); RequestContextHolder.setRequestAttributes(requestAttributes); return target.call(); } finally { From 9c41853fae66cb48de7daa00e542dc6b01eb414c Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Mon, 7 Mar 2022 09:43:43 +0800 Subject: [PATCH 108/115] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=88=BF=E5=B1=8B?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/epmet/redis/IcHouseRedis.java | 6 ++++++ .../main/java/com/epmet/service/impl/HouseServiceImpl.java | 5 ++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/redis/IcHouseRedis.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/redis/IcHouseRedis.java index 2329e467d6..01792daf8c 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/redis/IcHouseRedis.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/redis/IcHouseRedis.java @@ -24,6 +24,7 @@ import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.dao.IcHouseDao; import com.epmet.dto.result.HouseInfoDTO; import com.epmet.dto.result.ImportResultDTO; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; @@ -38,6 +39,7 @@ import java.util.Map; * @since v1.0.0 2021-10-27 */ @Component +@Slf4j public class IcHouseRedis { @Autowired private RedisUtils redisUtils; @@ -79,6 +81,10 @@ public class IcHouseRedis { return ConvertUtils.mapToEntity(map,HouseInfoDTO.class); } HouseInfoDTO houseInfo = icHouseDao.queryHouseInfoByHouseId(houseId); + if(null == houseInfo){ + log.info("Database does not exist this house info, id = {}", houseId); + return null; + } Map result = BeanUtil.beanToMap(houseInfo, false, true); setHouseInfo(houseId,result,houseInfo.getCustomerId()); return houseInfo; diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java index 4c809cb812..b4b8185482 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java @@ -325,7 +325,10 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver { } List result = new ArrayList<>(); houseIdList.forEach(h -> { - result.add(icHouseRedis.getHouseInfo(h,customerId)); + HouseInfoDTO houseInfo = icHouseRedis.getHouseInfo(h, customerId); + if (null != houseInfo){ + result.add(houseInfo); + } }); return result; } From 61a0679cd993690b54bce70aca39c513293af242 Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Mon, 7 Mar 2022 14:07:57 +0800 Subject: [PATCH 109/115] =?UTF-8?q?=E5=8A=A0=E4=BA=86=E4=B8=AA=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E5=92=8C=E5=A4=87=E6=B3=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/IcHouseDao.xml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcHouseDao.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcHouseDao.xml index 08adc876d0..5d81fe75b7 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcHouseDao.xml +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcHouseDao.xml @@ -304,6 +304,8 @@ and ih.id !=#{houseId} + + + diff --git a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/ScreenExtractTaskService.java b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/ScreenExtractTaskService.java index 25a4244301..90716be4c4 100644 --- a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/ScreenExtractTaskService.java +++ b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/ScreenExtractTaskService.java @@ -19,4 +19,7 @@ public interface ScreenExtractTaskService { * @Date 2020/9/28 10:49 **/ Result screenExtractMonthly(String params); + + + Result dateCheckDaily(String params); } diff --git a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/impl/ScreenExtractTaskServiceImpl.java b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/impl/ScreenExtractTaskServiceImpl.java index 698a3ec7b3..dea86b3965 100644 --- a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/impl/ScreenExtractTaskServiceImpl.java +++ b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/impl/ScreenExtractTaskServiceImpl.java @@ -47,4 +47,13 @@ public class ScreenExtractTaskServiceImpl implements ScreenExtractTaskService { } return dataStatisticalOpenFeignClient.extractMonthlyAll(extractScreenFormDTO); } + + @Override + public Result dateCheckDaily(String params) { + ExtractOriginFormDTO extractOriginFormDTO = new ExtractOriginFormDTO(); + if (StringUtils.isNotBlank(params)) { + extractOriginFormDTO = JSON.parseObject(params, ExtractOriginFormDTO.class); + } + return dataStatisticalOpenFeignClient.dataCheck(extractOriginFormDTO); + } } diff --git a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/DataCheckDailyTask.java b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/DataCheckDailyTask.java new file mode 100644 index 0000000000..e94d4c68c7 --- /dev/null +++ b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/DataCheckDailyTask.java @@ -0,0 +1,33 @@ +package com.epmet.task; + +import com.epmet.commons.tools.utils.Result; +import com.epmet.service.ScreenExtractTaskService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + + +/** + * @author Administrator + */ +@Component("dataCheckDailyTask") +public class DataCheckDailyTask implements ITask{ + + @Autowired + private ScreenExtractTaskService screenExtractTaskService; + + private Logger logger = LoggerFactory.getLogger(getClass()); + + + @Override + public void run(String params) { + logger.info("DataCheckDailyTask定时任务正在执行,参数为:{}", params); + Result result = screenExtractTaskService.dateCheckDaily(params); + if (result.success()){ + logger.info("DataCheckDailyTask定时任务执行成功"); + }else { + logger.error("DataCheckDailyTask定时任务执行失败:" + result.getMsg()); + } + } +} From bd2101d5010d7d0b74118e1ab3c20405c2a1cac4 Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Tue, 8 Mar 2022 09:04:43 +0800 Subject: [PATCH 113/115] =?UTF-8?q?=E5=B0=8F=E5=8C=BA=EF=BC=8C=E6=A5=BC?= =?UTF-8?q?=E5=AE=87=EF=BC=8C=E6=88=BF=E5=B1=8B=E5=AF=BC=E5=85=A5=E5=BE=AE?= =?UTF-8?q?=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/controller/BuildingController.java | 14 +++++++++++++- .../java/com/epmet/controller/HouseController.java | 13 ++++++++++++- .../epmet/controller/IcNeighborHoodController.java | 14 +++++++++++++- .../java/com/epmet/service/BuildingService.java | 3 ++- .../main/java/com/epmet/service/HouseService.java | 3 ++- .../com/epmet/service/IcNeighborHoodService.java | 3 ++- .../epmet/service/impl/BuildingServiceImpl.java | 8 +------- .../com/epmet/service/impl/HouseServiceImpl.java | 8 +------- .../service/impl/IcNeighborHoodServiceImpl.java | 11 ++--------- 9 files changed, 48 insertions(+), 29 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/BuildingController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/BuildingController.java index 349df657f4..394448e623 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/BuildingController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/BuildingController.java @@ -53,6 +53,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.io.InputStream; import java.util.*; import java.util.stream.Collectors; @@ -224,7 +225,18 @@ public class BuildingController { if (!importTask.success()){ throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"","存在进行中的导入"); } - buildingService.buildingImportExcel(formDTO,file,importTask); + InputStream inputStream = null; + try { + inputStream = file.getInputStream(); + }catch (Exception e){ + ImportTaskCommonFormDTO input = new ImportTaskCommonFormDTO(); + input.setOperatorId(formDTO.getUserId()); + input.setTaskId(importTask.getData().getTaskId()); + input.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL); + epmetCommonServiceOpenFeignClient.finishImportTask(input); + log.error("读取文件失败"); + } + buildingService.buildingImportExcel(formDTO, inputStream, importTask); return new Result(); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java index ea54959b86..40e37a1db5 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java @@ -274,7 +274,18 @@ public class HouseController implements ResultDataResolver { if (!importTask.success()){ throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"","存在进行中的导入"); } - houseService.dispose(file,formDTO,importTask); + InputStream inputStream = null; + try { + inputStream = file.getInputStream(); + }catch (Exception e){ + ImportTaskCommonFormDTO input = new ImportTaskCommonFormDTO(); + input.setOperatorId(formDTO.getUserId()); + input.setTaskId(importTask.getData().getTaskId()); + input.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL); + epmetCommonServiceOpenFeignClient.finishImportTask(input); + log.error("读取文件失败"); + } + houseService.dispose(inputStream,formDTO,importTask); return new Result<>(); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java index 107b6c612e..dadab70ce5 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java @@ -44,6 +44,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; +import java.io.InputStream; import java.util.List; import java.util.Map; @@ -148,8 +149,19 @@ public class IcNeighborHoodController { if (!importTask.success()){ throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"","存在进行中的导入"); } + InputStream inputStream = null; + try { + inputStream = file.getInputStream(); + }catch (Exception e){ + ImportTaskCommonFormDTO input = new ImportTaskCommonFormDTO(); + input.setOperatorId(formDTO.getUserId()); + input.setTaskId(importTask.getData().getTaskId()); + input.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL); + epmetCommonServiceOpenFeignClient.finishImportTask(input); + log.error("读取文件失败"); + } log.info("插入任务结果"+ JSON.toJSONString(importTask.getData())); - icNeighborHoodService.neighborhoodImport(formDTO,file,importTask); + icNeighborHoodService.neighborhoodImport(formDTO,inputStream,importTask); return new Result(); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/BuildingService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/BuildingService.java index a5d84c4d7d..0ba2aeb492 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/BuildingService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/BuildingService.java @@ -31,6 +31,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.io.InputStream; import java.util.List; /** @@ -75,6 +76,6 @@ public interface BuildingService { * @author zxc * @date 2022/2/13 10:18 上午 */ - Result buildingImportExcel(ImportInfoFormDTO formDTO, MultipartFile file,Result importTask) throws IOException; + Result buildingImportExcel(ImportInfoFormDTO formDTO, InputStream inputStream, Result importTask) throws IOException; } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/HouseService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/HouseService.java index c7a065024e..6000e27c05 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/HouseService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/HouseService.java @@ -28,6 +28,7 @@ import com.epmet.excel.IcHouseExcel; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; +import java.io.InputStream; import java.util.List; import java.util.Set; @@ -67,5 +68,5 @@ public interface HouseService { List queryListHouseInfo(Set houseIds, String customerId); - Result dispose(MultipartFile file, ImportInfoFormDTO formDTO, Result importTask); + Result dispose(InputStream inputStream, ImportInfoFormDTO formDTO, Result importTask); } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java index 1d6193834f..1f32607a65 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java @@ -31,6 +31,7 @@ import com.epmet.entity.IcPropertyManagementEntity; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; +import java.io.InputStream; import java.util.Collection; import java.util.List; import java.util.Map; @@ -129,7 +130,7 @@ public interface IcNeighborHoodService extends BaseService * @author zxc * @date 2022/2/12 11:11 上午 */ - Result neighborhoodImport(ImportInfoFormDTO formDTO, MultipartFile file,Result importTask) throws IOException; + Result neighborhoodImport(ImportInfoFormDTO formDTO, InputStream inputStream, Result importTask) throws IOException; /** * 获取导入小区,楼栋,单元ID diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java index f598fae562..28baadf38f 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java @@ -406,16 +406,10 @@ public class BuildingServiceImpl implements BuildingService { * @date 2022/2/13 10:15 上午 */ @Override - public Result buildingImportExcel(ImportInfoFormDTO formDTO, MultipartFile file,Result importTask) throws IOException { + public Result buildingImportExcel(ImportInfoFormDTO formDTO, InputStream inputStream,Result importTask) throws IOException { executorService.submit(() -> { ExcelReader excelReader = null; try { - InputStream inputStream = null; - try { - inputStream = file.getInputStream(); - } catch (IOException e) { - log.error("读取文件失败"); - } excelReader = EasyExcel.read(inputStream).build(); // 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener ReadSheet readSheet = EasyExcel.readSheet(0).head(BuildingInfoModel.class) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java index 84f46de18a..dfcf158272 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java @@ -355,16 +355,10 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver { } @Override - public Result dispose(MultipartFile file, ImportInfoFormDTO formDTO, Result importTask) { + public Result dispose(InputStream inputStream, ImportInfoFormDTO formDTO, Result importTask) { executorService.submit(() -> { ExcelReader excelReader = null; try { - InputStream inputStream = null; - try { - inputStream = file.getInputStream(); - } catch (IOException e) { - log.error("读取文件失败"); - } excelReader = EasyExcel.read(inputStream).build(); // 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener ReadSheet readSheet = EasyExcel.readSheet(0).head(HouseInfoModel.class) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java index 3064679e2c..f2b50748eb 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java @@ -226,24 +226,17 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl importTask) { + public Result neighborhoodImport(ImportInfoFormDTO formDTO, InputStream inputStream,Result importTask) { executorService.submit(() -> { // importNeighbor(formDTO,file,importTask); log.info("neighborhoodImport thread start====="); ExcelReader excelReader = null; try { - InputStream inputStream = null; - try { - inputStream = file.getInputStream(); - } catch (IOException e) { - throw new EpmetException("读取文件失败"); - } - excelReader = EasyExcel.read(inputStream).build(); // 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener ReadSheet readSheet = EasyExcel.readSheet(0).head(NeighborHoodInfoModel.class) From 931338532b83d164d0a2a3691a7b456ae259a7b9 Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Tue, 8 Mar 2022 09:17:45 +0800 Subject: [PATCH 114/115] =?UTF-8?q?=E7=A4=BE=E5=8C=BA=E8=87=AA=E7=BB=84?= =?UTF-8?q?=E7=BB=87=EF=BC=8C=E5=85=9A=E5=91=98=E9=A3=8E=E9=87=87=E5=BE=AE?= =?UTF-8?q?=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/commons/tools/utils/ExcelPoiUtils.java | 2 +- .../IcCommunitySelfOrganizationController.java | 16 +++++++++++++++- .../IcCommunitySelfOrganizationService.java | 3 ++- .../IcCommunitySelfOrganizationServiceImpl.java | 5 +++-- .../controller/IcPartymemberStyleController.java | 14 +++++++++++++- .../service/IcPartymemberStyleService.java | 3 ++- .../impl/IcPartymemberStyleServiceImpl.java | 5 +++-- 7 files changed, 39 insertions(+), 9 deletions(-) diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/ExcelPoiUtils.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/ExcelPoiUtils.java index 3ea8472867..ee92fbeb26 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/ExcelPoiUtils.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/ExcelPoiUtils.java @@ -255,7 +255,7 @@ public class ExcelPoiUtils { * @param * @return */ - private static ExcelImportResult importExcelMore(InputStream inputStream,Integer titleRows, Integer headerRows, Class pojoClass) throws IOException { + public static ExcelImportResult importExcelMore(InputStream inputStream,Integer titleRows, Integer headerRows, Class pojoClass) throws IOException { if (inputStream == null) { return null; } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcCommunitySelfOrganizationController.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcCommunitySelfOrganizationController.java index bbea13e834..0c8c8f6dc8 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcCommunitySelfOrganizationController.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcCommunitySelfOrganizationController.java @@ -42,6 +42,7 @@ import com.epmet.excel.IcCommunitySelfOrganizationExcel; import com.epmet.excel.ImportCommunitySelfOrganizationSon; import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.service.IcCommunitySelfOrganizationService; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.io.FilenameUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -50,6 +51,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; +import java.io.InputStream; import java.util.List; import java.util.Map; @@ -62,6 +64,7 @@ import java.util.Map; */ @RestController @RequestMapping("iccommunityselforganization") +@Slf4j public class IcCommunitySelfOrganizationController { @Autowired @@ -161,8 +164,19 @@ public class IcCommunitySelfOrganizationController { if (!result.success()) { throw new RenException(result.getInternalMsg()); } + InputStream inputStream = null; + try { + inputStream = file.getInputStream(); + }catch (Exception e){ + ImportTaskCommonFormDTO input = new ImportTaskCommonFormDTO(); + input.setOperatorId(tokenDto.getUserId()); + input.setTaskId(result.getData().getTaskId()); + input.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL); + commonServiceOpenFeignClient.finishImportTask(input); + log.error("读取文件失败"); + } //2.执行导入程序 - icCommunitySelfOrganizationService.importCommunitySelfOrganization(tokenDto, response, file, result.getData().getTaskId()); + icCommunitySelfOrganizationService.importCommunitySelfOrganization(tokenDto, response, inputStream, result.getData().getTaskId()); return new Result(); } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcCommunitySelfOrganizationService.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcCommunitySelfOrganizationService.java index ab97e36e84..79f1e0a477 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcCommunitySelfOrganizationService.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcCommunitySelfOrganizationService.java @@ -33,6 +33,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.io.InputStream; import java.util.List; import java.util.Map; @@ -157,7 +158,7 @@ public interface IcCommunitySelfOrganizationService extends BaseService queryListById(List communityOrgIds); } \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcCommunitySelfOrganizationServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcCommunitySelfOrganizationServiceImpl.java index 7dd0c6343e..366d472088 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcCommunitySelfOrganizationServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcCommunitySelfOrganizationServiceImpl.java @@ -66,6 +66,7 @@ import org.springframework.web.multipart.commons.CommonsMultipartFile; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.io.InputStream; import java.io.OutputStream; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -478,13 +479,13 @@ public class IcCommunitySelfOrganizationServiceImpl extends BaseServiceImpl fileList = new ArrayList<>(); CommunitySelfOrgImportExcel excel = null; //1.读取Excel数据 - ExcelImportResult testExcelImportResult = ExcelPoiUtils.importExcelMore(file, 0, 2, ImportCommunitySelfOrganization.class); + ExcelImportResult testExcelImportResult = ExcelPoiUtils.importExcelMore(inputStream,0,2,ImportCommunitySelfOrganization.class); //2.存在错误行数据时存入错误数据集合中 for (ImportCommunitySelfOrganization entity : testExcelImportResult.getFailList()) { //打印失败的行 和失败的信息 diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartymemberStyleController.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartymemberStyleController.java index b99c297700..064a85c98f 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartymemberStyleController.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartymemberStyleController.java @@ -48,6 +48,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.io.InputStream; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -143,8 +144,19 @@ public class IcPartymemberStyleController { if (!result.success()) { throw new RenException(result.getInternalMsg()); } + InputStream inputStream = null; + try { + inputStream = file.getInputStream(); + }catch (Exception e){ + ImportTaskCommonFormDTO input = new ImportTaskCommonFormDTO(); + input.setOperatorId(tokenDto.getUserId()); + input.setTaskId(result.getData().getTaskId()); + input.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL); + commonServiceOpenFeignClient.finishImportTask(input); + log.error("读取文件失败"); + } //2.执行导入程序 - icPartymemberStyleService.importData(tokenDto, response, file, result.getData().getTaskId()); + icPartymemberStyleService.importData(tokenDto, response, inputStream, result.getData().getTaskId()); return new Result(); } diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartymemberStyleService.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartymemberStyleService.java index 533cb59262..4a9ec6ba5c 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartymemberStyleService.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartymemberStyleService.java @@ -29,6 +29,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.io.InputStream; import java.util.List; import java.util.Map; @@ -108,7 +109,7 @@ public interface IcPartymemberStyleService extends BaseService fileList = new ArrayList<>(); PartyMemberImportExcel excel = null; - ExcelImportResult importResult = ExcelPoiUtils.importExcelMore(file, 0, 1, IcPartymemberStyleImportExcel.class); + ExcelImportResult importResult = ExcelPoiUtils.importExcelMore(inputStream, 0, 1, IcPartymemberStyleImportExcel.class); List failList = importResult.getFailList(); //存放错误数据行号 From a0ab64e5e05ace1a007dec996356b345755eb6f5 Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Tue, 8 Mar 2022 10:02:49 +0800 Subject: [PATCH 115/115] =?UTF-8?q?job=20RequestAttributes=E4=B8=BA?= =?UTF-8?q?=E7=A9=BA=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/commons/tools/feign/EpmetBaseRequestInterceptor.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/EpmetBaseRequestInterceptor.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/EpmetBaseRequestInterceptor.java index d19a1145d2..2b07b4b5ab 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/EpmetBaseRequestInterceptor.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/EpmetBaseRequestInterceptor.java @@ -47,6 +47,9 @@ public class EpmetBaseRequestInterceptor implements RequestInterceptor { HashMap headers = new HashMap<>(); RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes(); + if (requestAttributes == null) { + return null; + } HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest(); Enumeration headerNames = request.getHeaderNames(); if (headerNames != null) {