From d9ebd51a7bbbb4059a6a61c96be6dba67cd82a43 Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Mon, 29 Nov 2021 10:19:25 +0800 Subject: [PATCH 01/35] =?UTF-8?q?=E8=AE=BE=E7=BD=AEopen-data-worker?= =?UTF-8?q?=E7=94=9F=E4=BA=A7=E7=8E=AF=E5=A2=83=E7=89=88=E6=9C=AC=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../open-data-worker-server/deploy/docker-compose-prod.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/epmet-module/open-data-worker/open-data-worker-server/deploy/docker-compose-prod.yml b/epmet-module/open-data-worker/open-data-worker-server/deploy/docker-compose-prod.yml index feedbad307..74d27bd4c8 100644 --- a/epmet-module/open-data-worker/open-data-worker-server/deploy/docker-compose-prod.yml +++ b/epmet-module/open-data-worker/open-data-worker-server/deploy/docker-compose-prod.yml @@ -2,7 +2,7 @@ version: "3.7" services: gov-voice-server: container_name: open-data-worker-server-prod - image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/open-data-worker-server:0.3.69 + image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/open-data-worker-server:0.3.1 ports: - "8107:8107" network_mode: host # 使用现有网络 From 4a081313a48302c7989d348f7f8f2d1c0b7bfe1f Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Mon, 29 Nov 2021 12:26:35 +0800 Subject: [PATCH 02/35] =?UTF-8?q?=E8=B0=83=E6=95=B4hystrix=E7=9A=84?= =?UTF-8?q?=E7=BA=BF=E7=A8=8B=E6=95=B0=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../open-data-worker/open-data-worker-server/pom.xml | 1 + .../open-data-worker-server/src/main/resources/bootstrap.yml | 5 +++++ 2 files changed, 6 insertions(+) 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 6a40fad5b3..855babdf18 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 @@ -2,6 +2,7 @@ + 0.3.1 open-data-worker com.epmet 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..b158975c86 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 @@ -112,6 +112,11 @@ hystrix: isolation: thread: timeoutInMilliseconds: 60000 #缺省为1000 + threadpool: + default: + coreSize: 10 + maxQueueSize: 500 + queueSizeRejectionThreshold: 500 ribbon: ReadTimeout: 300000 From f13829108654a2f20957b5ae68831df3df51796f Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Mon, 29 Nov 2021 12:49:25 +0800 Subject: [PATCH 03/35] =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9A=20=E8=B0=83?= =?UTF-8?q?=E6=95=B4mq=E7=9B=91=E5=90=AC=E5=99=A8=E5=88=86=E5=B8=83?= =?UTF-8?q?=E5=BC=8F=E9=94=81=E6=B3=A8=E5=85=A5=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../opendata/mq/RocketMQConsumerRegister.java | 14 ++++++++++---- .../listener/OpenDataOrgChangeEventListener.java | 9 +++++++-- .../OpenDataPatrolChangeEventListener.java | 8 ++++++-- .../OpenDataProjectChangeEventListener.java | 8 ++++++-- .../listener/OpenDataStaffChangeEventListener.java | 8 ++++++-- 5 files changed, 35 insertions(+), 12 deletions(-) diff --git a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/RocketMQConsumerRegister.java b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/RocketMQConsumerRegister.java index 3fa339bc0b..dc02f0498a 100644 --- a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/RocketMQConsumerRegister.java +++ b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/RocketMQConsumerRegister.java @@ -4,11 +4,13 @@ import com.epmet.commons.rocketmq.constants.ConsomerGroupConstants; import com.epmet.commons.rocketmq.constants.TopicConstants; import com.epmet.commons.rocketmq.register.MQAbstractRegister; import com.epmet.commons.rocketmq.register.MQConsumerProperties; +import com.epmet.commons.tools.distributedlock.DistributedLock; import com.epmet.opendata.mq.listener.OpenDataOrgChangeEventListener; import com.epmet.opendata.mq.listener.OpenDataPatrolChangeEventListener; import com.epmet.opendata.mq.listener.OpenDataProjectChangeEventListener; import com.epmet.opendata.mq.listener.OpenDataStaffChangeEventListener; import org.apache.rocketmq.common.protocol.heartbeat.MessageModel; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** @@ -19,35 +21,39 @@ import org.springframework.stereotype.Component; @Component public class RocketMQConsumerRegister extends MQAbstractRegister { + @Autowired + private DistributedLock distributedLock; + @Override public void registerAllListeners(String env, MQConsumerProperties consumerProperties) { + // 客户初始化监听器注册 register(consumerProperties, ConsomerGroupConstants.OPEN_DATA_ORG_CHANGE_EVENT_LISTENER_GROUP, MessageModel.CLUSTERING, TopicConstants.ORG, "*", - new OpenDataOrgChangeEventListener()); + new OpenDataOrgChangeEventListener(distributedLock)); register(consumerProperties, ConsomerGroupConstants.OPEN_DATA_STAFF_CHANGE_EVENT_LISTENER_GROUP, MessageModel.CLUSTERING, TopicConstants.STAFF, "*", - new OpenDataStaffChangeEventListener()); + new OpenDataStaffChangeEventListener(distributedLock)); register(consumerProperties, ConsomerGroupConstants.OPEN_DATA_PATROL_CHANGE_EVENT_LISTENER_GROUP, MessageModel.CLUSTERING, TopicConstants.PATROL, "*", - new OpenDataPatrolChangeEventListener()); + new OpenDataPatrolChangeEventListener(distributedLock)); register(consumerProperties, ConsomerGroupConstants.OPEN_DATA_PROJECT_CHANGE_EVENT_LISTENER_GROUP, MessageModel.CLUSTERING, TopicConstants.PROJECT, "*", - new OpenDataProjectChangeEventListener()); + new OpenDataProjectChangeEventListener(distributedLock)); // ...其他监听器类似 } diff --git a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/listener/OpenDataOrgChangeEventListener.java b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/listener/OpenDataOrgChangeEventListener.java index 04e95a893b..8f123f23c5 100644 --- a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/listener/OpenDataOrgChangeEventListener.java +++ b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/listener/OpenDataOrgChangeEventListener.java @@ -35,6 +35,13 @@ public class OpenDataOrgChangeEventListener implements MessageListenerConcurrent private RedisUtils redisUtils; + private DistributedLock distributedLock; + + public OpenDataOrgChangeEventListener(DistributedLock distributedLock) { + this.distributedLock = distributedLock; + } + + @Override public ConsumeConcurrentlyStatus consumeMessage(List msgs, ConsumeConcurrentlyContext context) { @@ -62,10 +69,8 @@ public class OpenDataOrgChangeEventListener implements MessageListenerConcurrent logger.info("【开放数据事件监听器】-组织信息变更-收到消息内容:{},操作:{}", msg, tags); OrgOrStaffMQMsg obj = JSON.parseObject(msg, OrgOrStaffMQMsg.class); - DistributedLock distributedLock = null; RLock lock = null; try { - distributedLock = SpringContextUtils.getBean(DistributedLock.class); lock = distributedLock.getLock(String.format("lock:open_data_org:%s", obj.getOrgId()), 30L, 30L, TimeUnit.SECONDS); diff --git a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/listener/OpenDataPatrolChangeEventListener.java b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/listener/OpenDataPatrolChangeEventListener.java index 6207c6fa74..45acb46283 100644 --- a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/listener/OpenDataPatrolChangeEventListener.java +++ b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/listener/OpenDataPatrolChangeEventListener.java @@ -37,6 +37,12 @@ public class OpenDataPatrolChangeEventListener implements MessageListenerConcurr private RedisUtils redisUtils; + private DistributedLock distributedLock; + + public OpenDataPatrolChangeEventListener(DistributedLock distributedLock) { + this.distributedLock = distributedLock; + } + @Override public ConsumeConcurrentlyStatus consumeMessage(List msgs, ConsumeConcurrentlyContext context) { @@ -67,10 +73,8 @@ public class OpenDataPatrolChangeEventListener implements MessageListenerConcurr log.warn("consumeMessage msg body is blank"); return; } - DistributedLock distributedLock = null; RLock lock = null; try { - distributedLock = SpringContextUtils.getBean(DistributedLock.class); lock = distributedLock.getLock(String.format("lock:open_data_patrol:%s", msgObj.getPatrolId()), 30L, 30L, TimeUnit.SECONDS); UpsertPatrolRecordForm patrolRecordForm = new UpsertPatrolRecordForm(); diff --git a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/listener/OpenDataProjectChangeEventListener.java b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/listener/OpenDataProjectChangeEventListener.java index c2af1cffe7..6c5f127cb9 100644 --- a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/listener/OpenDataProjectChangeEventListener.java +++ b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/listener/OpenDataProjectChangeEventListener.java @@ -38,6 +38,12 @@ public class OpenDataProjectChangeEventListener implements MessageListenerConcur private RedisUtils redisUtils; + private DistributedLock distributedLock; + + public OpenDataProjectChangeEventListener(DistributedLock distributedLock) { + this.distributedLock = distributedLock; + } + @Override public ConsumeConcurrentlyStatus consumeMessage(List msgs, ConsumeConcurrentlyContext context) { @@ -68,10 +74,8 @@ public class OpenDataProjectChangeEventListener implements MessageListenerConcur DisputeProcessMQMsg obj = JSON.parseObject(msg, DisputeProcessMQMsg.class); EventInfoFormDTO formDTO = ConvertUtils.sourceToTarget(obj, EventInfoFormDTO.class); - DistributedLock distributedLock = null; RLock lock = null; try { - distributedLock = SpringContextUtils.getBean(DistributedLock.class); lock = distributedLock.getLock(String.format("lock:open_data_project:%s", obj.getProjectId()), 30L, 30L, TimeUnit.SECONDS); SpringContextUtils.getBean(BaseDisputeProcessService.class).getEventinfo(formDTO); diff --git a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/listener/OpenDataStaffChangeEventListener.java b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/listener/OpenDataStaffChangeEventListener.java index 48d0ece671..658a0982ac 100644 --- a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/listener/OpenDataStaffChangeEventListener.java +++ b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/listener/OpenDataStaffChangeEventListener.java @@ -38,6 +38,12 @@ public class OpenDataStaffChangeEventListener implements MessageListenerConcurre private RedisUtils redisUtils; + private DistributedLock distributedLock; + + public OpenDataStaffChangeEventListener(DistributedLock distributedLock) { + this.distributedLock = distributedLock; + } + @Override public ConsumeConcurrentlyStatus consumeMessage(List msgs, ConsumeConcurrentlyContext context) { @@ -67,10 +73,8 @@ public class OpenDataStaffChangeEventListener implements MessageListenerConcurre logger.info("【开放数据事件监听器】-工作人员信息变更-收到消息内容:{}, 操作:{}, blockedMsgLabel:{}", msg, tags, pendingMsgLabel); OrgOrStaffMQMsg obj = JSON.parseObject(msg, OrgOrStaffMQMsg.class); - DistributedLock distributedLock = null; RLock lock = null; try { - distributedLock = SpringContextUtils.getBean(DistributedLock.class); lock = distributedLock.getLock(String.format("lock:open_data_staff:%s", obj.getOrgId()), 30L, 30L, TimeUnit.SECONDS); From 5e144e241058ef09e7b25cb44e78e711b18dc856 Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Mon, 29 Nov 2021 15:49:43 +0800 Subject: [PATCH 04/35] =?UTF-8?q?=E8=A1=A5=E5=85=85flyway=20init=20?= =?UTF-8?q?=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/{ => db/migration}/init_db.sql | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename epmet-module/open-data-worker/open-data-worker-server/src/main/resources/{ => db/migration}/init_db.sql (100%) diff --git a/epmet-module/open-data-worker/open-data-worker-server/src/main/resources/init_db.sql b/epmet-module/open-data-worker/open-data-worker-server/src/main/resources/db/migration/init_db.sql similarity index 100% rename from epmet-module/open-data-worker/open-data-worker-server/src/main/resources/init_db.sql rename to epmet-module/open-data-worker/open-data-worker-server/src/main/resources/db/migration/init_db.sql From c660361cc7370652fc8e98f664f117f21ea214ef Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Tue, 30 Nov 2021 16:03:49 +0800 Subject: [PATCH 05/35] =?UTF-8?q?=E4=BA=8B=E4=BB=B6=E4=B8=8A=E6=8A=A5?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/DataReportingServiceImpl.java | 16 ++++++++-------- .../impl/BaseDisputeProcessServiceImpl.java | 3 +++ 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DataReportingServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DataReportingServiceImpl.java index 83bb35a03d..7f5d1eb9eb 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DataReportingServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DataReportingServiceImpl.java @@ -220,11 +220,11 @@ public class DataReportingServiceImpl implements DataReportingService { if("2fe0065f70ca0e23ce4c26fca5f1d933".equals(project.getCustomerId())) { switch (project.getFinishOrgLevel()) { case OrgTypeConstant.DISTRICT: - dto.setCompleteLevel("04"); + dto.setCompleteLevel("3"); break; case OrgTypeConstant.STREET: case OrgTypeConstant.COMMUNITY: - dto.setCompleteLevel("06"); + dto.setCompleteLevel("4"); break; default: break; @@ -240,7 +240,7 @@ public class DataReportingServiceImpl implements DataReportingService { dto.setCompleteLevel(getCompleteLevel(agency.getLevel())); } else { //办结组织是网格时,办结层级为网格 - dto.setCompleteLevel("07"); + dto.setCompleteLevel("5"); } } dto.setStatus(getProjectStatus(project.getProjectStatusCode())); @@ -253,15 +253,15 @@ public class DataReportingServiceImpl implements DataReportingService { private String getCompleteLevel(String level) { switch (level) { case OrgTypeConstant.PROVINCE: - return "01"; + return "0"; case OrgTypeConstant.CITY: - return "02"; + return "1"; case OrgTypeConstant.DISTRICT: - return "03"; + return "2"; case OrgTypeConstant.STREET: - return "04"; + return "3"; case OrgTypeConstant.COMMUNITY: - return "06"; + return "4"; default: return null; } diff --git a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/BaseDisputeProcessServiceImpl.java b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/BaseDisputeProcessServiceImpl.java index 75fe8a588f..fbecbe0f10 100644 --- a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/BaseDisputeProcessServiceImpl.java +++ b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/BaseDisputeProcessServiceImpl.java @@ -107,6 +107,9 @@ public class BaseDisputeProcessServiceImpl extends BaseServiceImpl Date: Tue, 30 Nov 2021 16:26:19 +0800 Subject: [PATCH 06/35] =?UTF-8?q?=E4=BA=8B=E4=BB=B6=E4=B8=8A=E6=8A=A5?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../opendata/service/impl/BaseDisputeProcessServiceImpl.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/BaseDisputeProcessServiceImpl.java b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/BaseDisputeProcessServiceImpl.java index fbecbe0f10..bc3d194bb6 100644 --- a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/BaseDisputeProcessServiceImpl.java +++ b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/BaseDisputeProcessServiceImpl.java @@ -108,7 +108,9 @@ public class BaseDisputeProcessServiceImpl extends BaseServiceImpl Date: Wed, 1 Dec 2021 12:59:09 +0800 Subject: [PATCH 07/35] =?UTF-8?q?=E4=BA=8B=E4=BB=B6=E5=86=85=E5=AE=B9=20?= =?UTF-8?q?=E6=88=AA=E5=8F=961000?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/BaseDisputeProcessServiceImpl.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/BaseDisputeProcessServiceImpl.java b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/BaseDisputeProcessServiceImpl.java index bc3d194bb6..609295a770 100644 --- a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/BaseDisputeProcessServiceImpl.java +++ b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/BaseDisputeProcessServiceImpl.java @@ -32,6 +32,7 @@ import com.epmet.opendata.service.BaseDisputeProcessService; import com.epmet.opendata.service.ExDeptService; import com.epmet.opendata.service.ExUserService; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -100,7 +101,12 @@ public class BaseDisputeProcessServiceImpl extends BaseServiceImpl NumConstant.ONE_THOUSAND){ + eventDescription = eventDescription.substring(NumConstant.ZERO,NumConstant.ONE_THOUSAND); + } + entity.setEventDescription(eventDescription); entity.setLng(null == item.getLng()?null:item.getLng().toPlainString()); entity.setLat(null == item.getLat()?null:item.getLat().toPlainString()); entity.setCreateBy(null == userMap.get(item.getReporterId())?null:String.valueOf(userMap.get(item.getReporterId()))); @@ -124,4 +130,4 @@ public class BaseDisputeProcessServiceImpl extends BaseServiceImpl Date: Wed, 1 Dec 2021 13:48:57 +0800 Subject: [PATCH 08/35] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=B8=A6=20=E5=93=8D?= =?UTF-8?q?=E5=BA=94=E5=BA=A6=E5=92=8C=E6=BB=A1=E6=84=8F=E5=BA=A6=20?= =?UTF-8?q?=E6=8C=87=E6=A0=87=E5=80=BC=E7=B1=BB=E5=9E=8B=E7=94=B1=E7=99=BE?= =?UTF-8?q?=E5=88=86=E6=AF=94=E6=94=B9=E4=B8=BA=E5=B0=8F=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...系算法需求-备注3.0版新权重.xlsx | Bin 64848 -> 64822 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/epmet-module/data-statistical/data-statistical-server/src/test/java/resources/评价指标体系算法需求-备注3.0版新权重.xlsx b/epmet-module/data-statistical/data-statistical-server/src/test/java/resources/评价指标体系算法需求-备注3.0版新权重.xlsx index cb442ccfe9cb70a87b2de2a9b0dab96057ecca73..1b8299fbaba2b8d5441c9638d115ff8b24b04bd7 100644 GIT binary patch delta 25807 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 delta 25757 zcmbq)Wmr{h)Apu2q)SRcxm8nb7OuS!${5*?t_&O_2MkJkLK z$0Mm?*7QwPyVO>X?|0dK&buy#B??NBliSltRr=dcJe3D(o0AE~IPLWN_iX2HE zp`v|og_o zbVck*pZr{UV@=V!X9IKqG>E!WN*C)s!!kO%gECK-0|stV#9Niet&dF0g|!F>X&$0s zSCromdv>|x1dsmZ_(6wRg=w~QKSkw5j!i4Zi&u1oH1BMuC+y z?khrHRrx?#^A%1n*O|g65#g_2-^E)>f+l}G3ne-jZUlJenQn89vUXg5zJK?SN7tsC zGllzyjSxdBl3d!wfeXp}6D1T>5(or>2?Ts2I$|b$cNM1!mN4b zPPn1j`mLSTjPU+^L3&!nB58vIM)lD)^vtGmVH{`Y!4npp*7B3=mWfjSxW*7%pH&Arm)l>@g4$cbNW9_V``ef;?> z_xq!`D#N%)l3~NSjQG!Zy-}C65ut=rL(XYZTapYsn|uKej`)(VP7g>b+WS2DLoDyV zq#h07Wkb3X&qb^~@FHgZ*yzHd=Vi$4`nlP6xx3aH3E$O)UhF1b7OT11o*UF_BO zcQICLLo|==Lq92W0=I23>({Hbe$mbj zdGQ`RcfL>Q))@NxvQ}E7;Yhxu@u#DASikbk?UifuB%d`IWa4hsLR1H=3o&Znl1#GD z;aVsedp1is4;I=T-M4Lbx!WHje};$g3nSNUsPq2w_Xp(l9zmW}OfDLCpGMw&O2hn= z${W|dZQ4encO}$KY9Dr&_P|$XHNeU?!rdY$XV3VdM#0FJmRr|!BnZO&&nz_IoBhnL z27x%7B0(r1Q7xBLKuk*iOPZd@loP%Yv7s9Bp!_y_eU~qGqzXQA8T#4m@5U*JW}(!P z-@|`+tXUOf45={N{=}cMV2~KFFnV~8U3^ADCAl}0mbxBpp89j|bY`iGI3Z~FdRxlt z{B)W7#JJhZ_4KlRWUM?YM|DT4*~9gE;jmar{MY;Ig|X&ZPvCrcdTDm;#D$Jda{hYn zr~S!%>eV#e^-=TrRWX6_^}@9M$;o?F_`+c|UFy~G>FG-S+F*0z#rD<6Y_&Oo@s89| zA2)%q)U3p!RP)vO<#b%}iOVhlIe5FL*UOhzmm{-*gQ_6`yG>yeuBR(;1iL%N;tdzS zMt-ezJzL)V1$5OvI=$YmCNOT&vcCT5-92|v>;lLc7fAJVkgtSJ>!&zhd7ba=Y_?Yi z8q=mVdYt}js2M*w*f`S~8C2aBeTY1sQ(t_&cM%7mv>OlAHec`Uw=d1(&w8CNonXAa z-r0;Ymh|*&xOTtTqxIF5@VZ($*_HC?CF#9qybGKy0PAVm^S>G*>!m7ZY@_pc!yI4eYtHhKVM4ich2%)OwtpE^wd7{c`tu<9XiY?=sT7FzM*Rd0k(3wh=D% zWAoy|7})W?KCSUMJx!Br04}!!a~uZ4eq97M&&>d*N7Y?D&E`2#!!87LPm!)KmPas_ zkIvVlR9&uLot}Mrd9->t*>TpfGTE{5O5)e<$h}?f>*LeCo=`fA^A+lP8maArvB~n0 z^78(Pl{IG(@2Qo|qw=w{F*nQeSBw%P=K+RcX@K+DdPn)#b4Mo!8X>sL>Prf#pSPt7 z4%sWb)jhm}jrt9mkQ3XFMx^q6qs()5#DDZt=kDp8J`!{|+FE=?%GF1md#V$3y;A<= za5T^jC8rYSG|;WYNJ76@*gE8j2<5KrQy*ZID_OGs?WPlETAYCR-P4fzu6nxW>+`*D z_u_##A0mF{>~Z9#yJrh~3_-(#_QpHe3Qk9}8zlbgv#*BJdbQr(A^JrfcD2$KwVQU0 z_Hi|ZHM{h_;cJB%rULCUek|`A(^*9$%%1F+1`@oKsz{x-US0NDA*_RMULy8P#UZGf z2Boz%Hi8~mwN`@muU8{~G-^?`xfBR|-o0l5v`v3`a6&VDLec_{4-r&RjWD2VQ&zFr zUd~Py7tvj~p1#^KAo^7Jb{l5|{-ma!9eY^GY%RlfGv@1)&`(hRJjSUEirEKC_k`o3 zRg0N|8z&pt+L5AOZcZn?^p+@kOu;qCqG|u@m0g0(%=2cIJQJyvsH86sW>Be7+_@%3 zT!9mKREWMaums9aZDSVbUnKB(c}hTJVv_ZTI3IHa)*)S0VgCK=lkCk+mVE! z#13WU+=)l$CBIV9*EqvmxtMqQ``%Up;jGcE(J~E{Q3?PiVqvWz|-Md zLhD1lhE20|y*X5Qr8Tp8znfTxjUYve&rkK>M&1>Rd%bk~@kpPargLr)cmq8&s>jBn zs>!#L^@RU2D|sPgR=j;0h!AZb$@SXIan!$C*PogRq5XQA<9YA{IV{79tKq(3o7k*g z{AyLv?a5P{>ccw=mgF)ceQ%yjE)Zh(uSUv#W43zcs^Ht?%Yqis*}GX*l-;u1?=b5) zvM#*xbLwm3Y+GYxRISW5`PP;u`5*|Acn(nw`m3i!shPaaL4#GPK)-*SK>ZNv7p|XL z0@N35y-5S49Y--lwiaJp4dtLeEt6h|1&Nw%u(h!+tAdZavm2`z24il;rvp z%^d@5y9Cmt@~*&J`M~t#MBI7pT=oZQw(0e-`DiNEQ}(Z0GQ@Mot-=ovTTjL#v+VXT z)#yBl1zU3(2m6<64rdM2)tf&lPo3G@&-Sy!B{bt66!82Gv;KOkASb zc~*y2eOr{uPAYABvn^$Iy**`+mO%J)+<}`jGCaFmBiQamR9%R;rE_|a_fdrK!_$S5 z`h0D@4aQxrfGo)aW-CV3J8t&)4x7&iwUC4G5=DA_IzP2a#E!*bDN8D(c z`nd!abl-oQ0(y2%T%pm9x%00v)!u)TrQBuZgm^fLFL-GX-1c^KgB8ym2ioO4WWx-^ z@wOYV`;;*zB%hmO9s0~M3fV-f4(*NnFK4qHNB9jG(-@t&{TQA4O0jhfV%)H9f#b9 zR9WLrnDyeOt4}#gM#N7&#ZulEm|)rJeq^LGGwi*ti_7>t@oDSTb0~#Nx{8Q za^QHpO?^=Bt@}7iM&lXk_)&KI_A3iYZtUe?;p~bUtx7f~S2M-KuBy}lWmX;MbcLN) z%0($|+02Q?)~|ET^JOcd=as|69`I(ZU)&y_HPOA!PAxv1#=;A!X6P;&>3cDK|C_2~ z(IziRVrhWLsDCrhd+1kz_Z@Hv+!b4iltaMhyb=fcvmmJ}-$IB0@h3X>3ks8H$k_Ez zZDUX`%44&QM0_`^yXTxnqoa-{I0Z(}71yhaa`-iR{R}N4#l)-fEmHGD_y;xLx@XJ0 zk`I~cUyefA>LODqNMaa|68O@X7Z`@0L%58NwY;7A5>S6YuyBfmOZ-E2nZz8 zzgwut4xLts%^nf?$@_*ta$6>fW>?1k&FaJ5qJS*ByvY7xO`u5De0gL}w%@@IBiLIk zIXtnv9cztPqqm0Bj@L!mQe--Sx%S~zb8d!PHUgIfY&EIm*FQpA=9MKyTCR?XRK6@| zDhs#w;NPZG;p)b7ZfCt1A;|Frj!zwszf2su_p{14ec*z&R8B3|0=Gb z0;6N=WYw4zu(-Cm*sq0J2E`!h6uccPub($m#0=ArvHRvMY9{YOCneBYOK1DsLXy9s zvSif!4dGD&gRFUl%vS#ko+93+6nwX`%^V7(0M~#Yq0AH3DrWo>#inu=-LQgxdfnQ9N5~b=vY}PQ6Zq|^yjb83zQdwZe4ON|X2mLv71O1_NS^;xu zNzi?pb0q=L!6#?zeMYS`{nS=;)3i*DdI-2SB_Fkitd+#6(W z9tab@asAaZ67EbaZna6ftyi5&zn$RwnGw9Y?{57x4|H0>h(R>xX|-?~Rl{Vn$;BL= zRaCHWe%~qZtL>E}Z-7> zcFYlL<^Tanj#i9iwquMg!R;cxhvC$j46nrUX3|K8)Xjv<-_KP{exOKvS52y0g*+;eb|mn6zEMjW#aqlYO>gKR~$7ud!`IPwlRUmrHOIwTxWTFmU%8qa7G}W zXn9%pggw(8I(PfXg_H_7cdef5d_6Q;Nv&xvIEPb>$81Tp5$y#65SS`70g7U`cdowJ zVY;vyZHLznu&^`|8V(ISw+|B@x%cVN=J8MchTH-9eLW26iw6bz6CZ_>y3Pv z3;>wjCQT{|ut}#FS zXy%hxmQwIJm*fB^q4>reZHV6S*WLbbYZzG#^GA(Nq`I#pnwtLSzy?gk*}=C#i5-}>2aLR~~FLdgSuz>iaPi>xP= znA$;)T>r{drSs~3B1kbpP(|N1_ka#j-((2(Fqk2mR7Px^Rpv(6U4Im`9KV<{v1=1i zK3_iR2Or7$*^$pD5});36!&x*)Y`i4WSZXx==j^RJT#4-X`~BBy*pAM_Wp`t%znqqX>0osNO6)@#>y+ zg>9@s7&fHh@1`uSZ$4L-8>-*+{$7FWz7KrBs=J-<_~1m$_|QBZZgaW*aNb?X?a)!c z*P`-;e3l6Hn)=QvHHx`2OV=a;TKOlT!f*Xuy0DEU4q3(l87Fs{Nf&-ML2`31la}+Z zpKAro?YG{}Z-28UTRq=WrCamV?mJp-UkJgrO;+1idC{r8(9_oF2VTNEcBm9H?GA|U z>afl`r(;!lNy5Yq&)^vi$j4{&9Q*f%KEomH8*@RNdwQ=pr((U$v!39^t{vG(p+0B zM?c}{NouL=cFJ6dh)s$SFuM7&>mo)0wqb9^rjgS?Vqi^bn`y@!L%eDHvdywqfKstjbqk#MAI3o$2vgKb?;t_62n9Q zv-swIV!B%cqW=RMfwV?NS?h0eH1;r)s0!^EC6axzbcI(X-2=E^@U6Ewv z^69ggq$NBfgX&Q76p9WU%QhvC=Iz>)0asSk`k~k65=Q*5>2|!U&)L9o<-!U!H8F3k zel-ey``&+bJH;c%R@mJ)hd#Dyel5$WBJS0h#5h=o_7N^A{K}$SmLoMg@n~38R!RSz z$^a%X^g8u5Zw^&c&Cn7M&5fO=)|4fm?`a9K9o&Aks^mCTKf&JSfpB$cIf1y{2dDqyBvPw;2X~dLB|delo$k?l_r^rMZ>{4ar@K7HnS!c zKlwAgbgk2aq_$}Q491x{?oGh|`wn}L<5jnIa&oRiIV8T`>QMzDsl9?WMEFjf=@c-b zuH%Pb6Xl6$20@cjiwTQrAhW-%>OOha@G2>@)a$!TK=l#mhD(_Xh^c6kmcSQK_r3|U zil$5SS85LfUmJwA(8X`-p@$Ng^7!U7zl?{B)HQ>Z7|t~(L!5f#0~X>I=0uD_SqXSv zMx~qmCt;r#3w&@AhL1i)1ErMlR)O0AaneRjPR5D|lTd^n9{M0m>L<*v)gpi;h^BYA z*;i4u)HqP?RU8Fa!Erp1EPLTpmSFp0&I6!5B~RQd#IV`!LlL^=?Mmm-qBx2Y%chrd zvg(dw%iR=*f*E8m4lBZVr+qOPFq5BL|LeLdHZ8y z?Hr^t;ERu1NGNiZdlzH`anVZ_hz8*em@QyGQiAA^5dLVh8Koiop&;i%k>};Zp1@8; zjyD#cGjataNPJi^Z-@=&7a*8GbYXBNz2RPuqGY}OogTXf~wpk+K<| zc`TqspzJik2yepnW);Z;>~R0Uvtsfa9>(uq_7&|SJGuPkx97%3EXhl=>B0F!s*_KF z1(^fsN{TuLELgNfPworQHK$3r2Y&JL`Ad^Gd+oDpa=)@}@QVcDP~Sf&MW8p? zZW7SRlpmqiqP;&sB3;npTqc{v*LiYyaUpTi_PZ@sct(f4vG}-R{{>N#!)!`rVEO82ErNhqJMbuH^g$E!4NZI%rqKN zM@fef1OI|t@CRh${aFOat@A9i2oZ+p40C*E>lMqwFClUA$-1%oe}Y_w09o4?)I}sm zrhl_EfP}cVg+V%10vZkX8|AN%h6Uq% zn@u+$Pq#sUF!9Gr)d{NJ0CiPZkcF9hR^s#?c|~!|#?RM8Kc1_*wOqs{zBuO*{ECwB zT&!c|9qXB0*ECzdk~z4U%zP=VuK6W|v48T?TmO)`os=ze@`I{>W&;bKg5!|o*ZJ{7 zksq_Y)__pin%5BckyS@{w2K{}Ds465m8P7hqRQfboUOQDpMsxmJ_R9dVllc z5bG$)IaD4duoua7>yQVy1Q+z|wTlhg)>o9K7T83Zew(5Iq>v5Dm9X-nEriNk-|Q1a z^@cM6gO+~mrnDPN25R!SYXxHxLe1)Ieg!Fm29|NipSZAhHJcJ`d<*!-9ktk6wR%)6 zHNoR32Bo^xt5yM_FPN@d#|F$lRV4c%Ti1YvV-Jmb( zDUrCFvC(SBKJ2Dn40M1GbBPtDcIkT-yNk9uTH(Z1>@_kZJ6I)JLIhR$2Xi^~s^OQ4 z&|`QO?-l04cIy-b7ESOGtG+Ba^DYP5djP*Mjw7P9qJOq1Kjw{G^PSu>w34}JGV*z+ zio&cdY$lgI+&%#|5RQ$&rzP5vnkCVp-LPU^WR9X-$YzFvs##$V8F)$pmPG`Q36(lV zD+$N*kz2&|4-isCiw=cY`-zhdMPiq5VV{t|qBwoDI^9bYnOfK;DYFP#WP~69Sr`F$ z)<4S>6-I1YQjv{Z7}6$zHg0;l(D)++#j+5iAdv(fvlaRk175E5D8!#s@hxab%xIoZ z;{Mc6bp-9-NgD zX?!ylqEt`n3n*7@%Q&T+nQ(Fi}KEj@OL|`DBF(Ljd^AAz}xPUk>gM@Hbk@AQL&Oi+b z;d@3=sKrdm!E~p^eVqtySq|X*cW8c})khce+IUH_l?km!Zo(-s)RLYe-P1U(zl(i> zI$>o^YooPt`-!oef);^x@9D>f)q(i9K5~?x2_}|GcfL&$c2&n=5HWm zWk@9yvS0-Hen$}1jqSrMc1s=0j0PN91<|J5Y`uy1CArYeSqD!FjtaN1zli1`!N>zV zunWO-^cW_`{0bw`76gekDFTM1TnTuD^ST{Hf6tT6XCE!t;<0n% zK$giC7B}Q`oXCLW$?egpQvg9;>bi$S#`pf{MG4EDH~iylQKFc?ZxR7G2eE&Bw zw~|4UAc%>G5O(};Y!^Um(SiR3F2d`NX%L)AFi~#(>$MU&#+PCS$iLA3rHx7>>i>u* zno?ytp$q}?-+7YDwWZ=#oMm|+0ON}lss}xFD`D1$6ofiavL`isD1B8Vu~hsG!ZAhj z57%sT+-w`7N~4JZMFd$`_-{ZOxgsr#@Y+J35+{8U)eR$F&hxo>or9|HAN<+1Bw(x` z`ydGC+V)W<*4F}0c6X&v4*sst*H^FFivyz|=PNshs7GR#on7p2@VMAAe+@P*#Jp|i zwK?A4EfFxB(`AoUl=pRG1>POm_dlLo$10MgxZ1Jv>p0oA!{-Z}ypBj&zkC{AMS!|B zds!+~zT|iQ2x3WaAcWP{dL@zX-*;PC>q~moMV^G$Pt~15p|?X@JYQO?U*`82Q+rcV zwD+N2@x{2RF$QILunEp+M;_&+YyRRP&d1wT3#XKE?iHqupbQr|y#nOw)*A*wpV11Z zZrpd%NcwCzzD{)MJ0z46j_Z8um@f~y=#!r2Mbs0nO6OICuLgVk=G89zYiDx(f+B4X z+%Fk-RHBcVD|jc*^a-DzkDE;Hs5pZubt#mvOvBrfWSQZx`|iQ^!)|I4n-QKQJHbo^ z;nfM{ajTX(=m$4i(?;NNs4eo?96drdBLpd#<#y4!h)iQjz2jN+$w`=T`7J|1$qBDj z>T1n^Q=?l8!qJpckqXI!kYW)M_m6;rIWT8xqU56mH3}EJ(Pr$b$p8lP!Z9CGjt(Mt z<70u6)2QK!FE@!-fTKriTvO;Poes!$Dw=F>VV9_n*;6XV^1tkuKSP3b$F`9fz1S=A5@zyilnsw$Xo(uB#uHnpALE|(EAU*D;~vQ{YWkq;QTj9vr6#`HIKl8 z5c!4%Q9pi{kN(ojb#fm;X>=uanm@wyhHfszyFTlk6WlCH0>)II$pB!KOlEzYE*i1C z#vXjM)2lp%8#~VQ?^CxnUC^{*Js4UPO>V>THd@&xneaq>0{Tq6XgGQiBA);j9dxW4 zcS-T#hJUrvvJeH4D~KyF5F*o&ZTnl~@rZ6-zVoLZ0H6%tm>*#dYl!~G0kh9MumWW^ z7}Z_SS=3nj9;AOX=C8A%*RrBF&i=<)+`m$Hld+%`1)6c78B4oC5DwEX@WHDGD}t7X zi*o*^_4$6dvD!e5AyI$_vQ4ERqA|eFEpEun$6z0ce!Wu z6U|R(+*b>V4c2S91SABYXl;~#&`W2T#x(s+g@{J`^~^ zA&d^=Zy^T7F~x12D2g|c4A6U56zW@^Kj*7_A2qa-RJnH2Nm;qP88 zsw$ZUX+CN`nFCM_K)Df*zwx~R7mTka#{U)HtlR$)U%j~hj_>~rFWo~7gzy<%`u19X zT{T21QkvEx&Fm-uK61$}q(bz~4&em=+pf=fuTnnPuU74({YXXVn0)B-tpF`%K@&?u zWEi(0qlsm}G}FIjUZ|6j+B?9izxiE#Y--WjQ8@T51o@*Knk5xnNH-124LN_R|BWfT zCU#-;up;t}bRd*32Fw$JD+q9tDBgc#`dd4mu$HLHvt!-38aC($-F;&CK!0`OoQMz> zYtoPNN-IwIYZ6W(vC*hfl0C*TlMf%WQ7D#_dQOLhi%WT^{8)dhp!q$c4-c&ac_-x^ zjO$+)rzq#Brba9XN5Mtg2j`oQ*bgr`jgphjng!r^xedE_#!hj1lrWx&SSw$97&eP&Z>xbP(z3`Q9S)Uq*$^NRX^LrsCq#E}UT;M^-gaa&O+^dxyl9(2+bDfnroA}U5qx}3 zzbW{gp;<*`K;`s8_NL5oYBPU{dP~p#u2SRno4At7)z1(x7aB95cW)wiG=b{84E>D5 zzRw2hmG?QK;%WJM7x_=A1vq_TzRXQ(dxTb9=0jgV@HoWLIkDV=qQ@I zKUZI}rXY>VPPEnQiw~3tI%uRX+PlHA3E2i7+|9R$0M_1!bLOuu$y#qPTF9)}(cQj| zi*JszP)Uqedm&s6_2)DiX7^K$dg;2B;grA9xue0o4!`&@r@A$wx}G zu!>+7NMPPxl^#J&V3s2nfPxcl?X)DVm=tn>##Ymi>^PmW4yWq-x*>S|f=>I#@GrBH zsYxu=WR`j>+K)s6G070M-Q zf6_{fM*U#v2Pj8n;3P8ZeOS+KbCcG{MTHJ$e9+b8gl;gtBnAzFNs?R2L_HEk!xw;t zTdE`bX9tm4)a5xC4Uw=(YgDkvyQ>KboHdDB$Ot|lHfv$*S9kc%?M8F_;8OS2kbrcy z!Y~??m~-fr#zMmfR!u+9lp&7%SmvVi4_IT6{=5gk6Jyf4ie84MP-H9Ttl z9xh7ZoVID$RH17Yd>JH@Ic_I9r#&(?7+7$v@M9y1iYTIO1`_oD$4Ul9VtoS)~Ra)Tli+_T!NcNV$z zNcM%b!lbTWNW7-YC&8XNXSj@e)Mi{*y-;o9bP5owzMe;`g-+2wr5cnB+FKjxvJW=Q zXh|Yy)`}9mB+-36k1BHMmGv|uV6Q&!M=fUalc2p2GPzS|O#9&O1moosxzmmx&7wqC z&l>TXZ;R1-lV=Kb{P_K&z^j#Z+Bwq?&GSDm%cM2IbNw+sZ*u%5C3 z^gk0mXnHYgYT1J9PDHd+!!SiP_9;0bg<~>*s%d6@J)F1PX zE#7zvt*kNT37y)}&>WS$l?x458-Y^v)iL+pCeNMKd?oXNjLlcCg5^n4z8rKNbyRLV zqq7ugv?c+3#O~R@kG%RIG>mK|OqxQN8=&}sj1zk_+e%GC6v-)~GWUfIM36&g)Exy$ zdhP+C=$@eTBJgF<$FDeu?6fX#&tQ*~?ROxtrIN?op(3x*?xv9sa(-_xdJud@LT*F9 z1zT`BC}ba#A(YI+lRakb*K2}TFnGnFcLGO-vRC(%b` z|DuRW&m?C2G+P?#-tY3GwGL*jyEFl@CdqFvRI=PE#JU4ZqA%ask&7D7qz84ecke~}4*6!Qd(3v#V z-_}3xfoe@`I$mLnZcV)KsOFJ``$9h2_#AwKs8B9s);_DDgG>-l=>u1%-YC@gS&@CV zb;J8#7*FC7hjIurFh`lYb1i{p+)-w$nN79&Jf8_DgB?4D?BBSL8CS`v0%cgB%ul<>)Z4dn{ae z@s1v>i;v>J_?5t=`W|1y+ef+oeMdT`Ep2c#+GA4UOwEOyqX;%;y~m`&q~V{Rkg!Ft zWynRaWw#Ni1{}S4gYxECL{|76&9g)jHko(%FUXu4_+OuFQjcDqX?&IrK_s0Mn?n)P7y>l$3Gj`?_ZaZGr@E^pKBG zh{rC6bIidO;KO8TwYS;aqdX@bu~^r^KQ#DVCjo{#i-wW@LU>I->n9$9Jq3G* z*B-+imf&to;+58Wd~HxPFW%E=Mbp<7W%ZOxVJi_8t5gIZiz%!h(S-qSk(sce9}ndR z!kYT1ruq_(m*KX4eTlMg+YGdEJ2p`U7<&wyGm)eaI##x$l*fqRGT$bt{2`S7M_JviUS&EqBD}3ojse!3riwi+g z0EMg&8m=2v3>vnT3g6Bql1scWt}9|@WGt48@~g}PFI#waRbBWZ@7})O|FP_Ug)BP~+0D?D z)0&1Fj`yX#FumXUPA$?nb9bQv>Nv9=d>hElAoiiabdoFKDvNb$ zT0QlA7ik_ZSkX$=VSSM-1*%5r4lS?4FtW99jObkPJJ69N4q;YU5}Tv`AqIJCUANx& z{ndSu0V>i#9&7gIUK+po_pfej!*sLFn0Zl3@Z!HC0Fa?<-e3x`))a3qEGo$_?7>_9 zi_w2X;IgjVeY`FE8E#2PC7DndXM1XDI!%Ct<>6f!JDYD>;ZLJ1!1iq7DVykUdu%?f zbIb}e+7_GjQw_nY;@cK*)j0f?Hz@5T>HQ@=cr8NGZ=j4VLbm|#8joKb>RPqL$W_7= zRkACvcPq@KHs#<&FTsln15%)LDP=Eu?%Na;Z3xKNL8`F$Y>1Gmg33IQtCAEcEYE@U zs>JZOePqyM;i&=>PHVQVmO6^|_ve#^)9t*2$xDT5KXLC>jcLaS)|PgBp=LVdzo8$( zHQjMV?tjTZ^G_s5B)~{iAtF&CB>f!9SOQihYeZFwdK+bt&k3MfXMqa)n{=9CzF>7K zd;wCNgP{D45O>%zIzr!>Z^4o*d@GZJRWQf@GHxLd1Zs`p2B@>dr9;8s)TiUx`npDr zTA1U^j|(s6rFH&Kbkj7F;5RHfJf$&z2V|JXI-N89oU$tThu<P zvy+_)ofitEeqJgZS({>lWXFVWYV^iuw zj_UIgS?SomcOWRi@>LQbEJcc+q+{I-OGk9Ooh1e-OA z@;L=R-@>DOWFI3FbKdn$!d_&=daZcZ*P?WOMZ0;5=7S=g2*jjZ#9OmhhR+^78rZ~uW*`xBX8I&yfBysBALIz{ zM9am>1Zk0XiF2y6Uuzyk6%yV!u zs8=%TJN=Lwqa~y0Y01#@lF_^1#M9hHXH;8lC$oEkO&_w!DNn?ZHRW_2BNjVN0`G_6 zAa-Swy~AE#SgQ!y;Yy908c2dz-~b6;FH;&^1}=Z56}v68fdoBeHl*>;-`)Vf-FeWN z@s=80e?tZX;XfAN#HY*rj2Q*Aaa%d=&zc`VS9)G1As6O>W+B}SyPad&;pzSVT#%6+ z{PG?tteUiu5FVrGBdBYq;UlPZV-aHElgbm$beXY<4SwTxU3R>z~zz28ULl zA{>_OL`(~(NSftxKUJFMVbFsEMpLy%xKWi~Gb6K@rN>bdIJCIvtuvU)Ko1zY*<$F~ zr!-BW;O`&N`hY`U)4>unIwmp85svzF=4w~{EKEM#{5#HEdi2y)8RQbWc^f_2V1UAl z%3?WyqwmK<{zzpOHt`%42^@l0Wz5~CdEpRU;)THad*j7yN!(4Dis7WT$HI{Xr8h(> zUwf1@$*)NSZpH5BMg4&od;~^p2F@_6NiXGkf7=g-j`?NbgJbAaB5;`z32quY6mIwp z28iwM?*IYXKf#S2xD~5lZAr{WQ~EQX{J#(Xf1hpZ1!tAuFdV@#5Li$lZGW*h)E791Mhs?LCf7z~XqGMOSH_QlL!TDL-q zH+0dfRaBqTc&B5Q@T`7+?=QyyZWtB84P*Qb8}je`9$vHmc}V|Xt^tq`QE(d^18#$V z=Sp5Ea(SoEeoOzKgOq6fDqWt#Fng(1iZjO?ab0iStv3!odO51@V^mqF@07?&GXlGE-+)y*O@g~mqwyztx5y-6+} zuouH810R4DK-pkcL{Zdb3{k(zIIa5ppo2Rp`nKw=>QUfE1KhD--fY`juoEEcn!g+) z^LxDS=xcH699*w{Z+0Y|R}7#$``nPAI;hi>$8q^oa;mKf>gU5mn~-8tuWIRB7I>C8 z(lxIw`e-oF5oxO7I}!7;AC@}T-fmP&IVnIlKsxVcOQ$EzC9uYg)dtqrfq-XC{b*v^ zK0&Ho)P-61eo&{$a#e73<&Q`Lu3;~2?~@m*RJi#zI|mr>NDrVXIxYK!AlLSyF%Z|% zYci6*R@`n>9uHr-rxAf0E?4%}^!~vuvrX3|+^n92pjN~{Ci&^DZpk1WtHi@DIv`u> z(L0f3JngD+n-34}P%DR*`zk7%`iEoyY}Bv8e>@4YA!LieW412$74@<4u@RyUYZ$b- zZC{=)AQFYg)opt`8SX`-@laAC3O6^zJc>c$(915%8H(Qa+LT9H1)VJ<0{3R;NXQp~ zE5j5iovX_w z2+3!h^0gqM^ z&hqtkD=--FIR&U$H2Tc(?dORn*VeK8iXzmn04sSj!8M6hw$;f|#)ZS^u08{?L1V`g ztWPpyj^=#1HDzn&kVFhZD9E!4*BV#0PUuZslojJA=e%a4%6kTuhn}XlnmsvM z`KEC!+}XA?bs}EelD2ElPGZf8>)&e~`k_-Dw4sV{TZ9BQIHuZ1rjEUKq?-O6&@wAL%wy!))5rl~+70SUJ~ z0m*jm%P?H#IcPMx?P)kAm!hZKbIgQp+;pM@22D18V&6LlKjdI0%oShpQ9sG*YLccp<6^u=yu<5?*a0)D4NE}iv(zlyvpIk{&k_BK|8sL z9(Kz1o30-8wCv4la4gN%7X9Jp1vs3QTU+rGOUTXzx1CEEMkBOx51vHdp3TVs zuV*pP-mD78nvh|FNZbH!z!N5ay4f zUq&-6cYCqi?lrzE#I3BvPkQXw5!cbs-SoDhJ7;X!rs!=$&F3;!1JOiauA9c7EMUqH^d`?}BFP^OwVq(#cASzj1)>0&SP~kYKbJ%|u zS3f}O0>|D|`h^=WP8l~N&cXT;9eG_cw)v~|J&bRoyW-5!sd$Vj`0HU8#yDxe&;r$kT)D#t#ojpw^MiOob0TL>3K`QH|NTvub!n= zl?~M>SN3~=BKVi)_n6Qe%Fr1`r90$GTw!@ILhG3%isyzqCiktUvV5Fw0Rn}rF)dSa zJ&mb|&l(vf7*5QyBGZQNet$n)SGS*z53OPq)lWL=qT*Rkq4-vYM0!YArxO(hD3*}1 zb?Eh+E~)Z;?S>bms|9U=-0At0cDbPJ+% ziG&Q@(jiDIAdDOuDN%rRdu zZy6LE$%%rs4oA=r?S0o$g6_`>SkPy4Nf{? zs~$vA5Lu!aZG~H)`Hd`_FE=MU@5Rl_E)Kc;|0we2Kf-Y`ygKw3r!+EPbijduUM9NI znfk?ymuXz(wSrBi=Xmq(SDpi#g6+SpP%>CMxtxe6!QPxs;V}p$~nl$|sJ z{E9`s=GJ9$%cSUhSfJA$7iC5x*B&ErVUeb>yrDjEAXZuIjmn#3O#vd^q+XrnO~U#o zr)l$3jF6)IXCm6SKPwJ*C9+FLInach-ukRE(F3Y1DnzB*pieY5JMnfT$kR#TVbK1V zp-$aDX)&4mYagR{~F>K4N6J z_Zn~WmOWrFRz~x33#1fP=oS540=Wjr!R%_Kv!;5|u^JGgg&;v5j?#=?GVs~;Geplxu(OxRjmo>w4gvTLwLzDE6 z4ngggHkOoa*A=+^ggC@{fG`pNQSj6i`r^7s!P8=#anP<-(BsyPxdasmFNaRx9+BZc zT6cG*eZfh{c$bV1gcZTvEgcXgsC1c99Z82w3g9xAQuH;HfDKM#7zqYD;n^hgN~R8` z55Zy?a9=@*xL9v3^JqK#nS7>y9<<)ft!9IB8&?;YsT!w{k*Qo}5$=il--M8v<3Yy=C9l*9Eax{cgyobT^=K4TPcC5 zQOQm#HP-ZvaWO`{n*9dvitMDU4C5k6=L+o(0 zicI=ySnuYL{rH!$x4z3gZwQ;}Yh615w7DJMw~FuiF$-5_QZwf0(-l=4epGSro)URp z@8XFt*TxS7zqDuC9n?bCpJh^XP;$zLCIC3CCB@U<9`Yc5n^vCIbZIH)yB1P3Tnx8w1vD>!;S}#7T zf^f8c_Kn1lT(9tw?yEuveA+u04uDn^%qryv>T;4xT0M=$Et!fDM2}SxfR2?VNeSro z{L^;+f2cS*Pr+zH+`2g^`|P?1ooXEJU+PDQnm-Km91FagO;vkD^J8h3NUU&8G~bhX z@B(aU9=Y&9$Lk^{g=!Fx3GN$F{1&wR*y>5*mbi3^N&87%LqLZ5M!7{b#-?mB2@{^{VU zJOM}%KcvzJEzA%VS1?DXTL6gWi!8h?e@o`7_)>JBCf0p0E*Ve1d>?_@aA^z%IkP77 zpgX0XNpbl^k@`&bO)lBX5rM?!vRr$&GLf#18Y1`B11|%R$IV&h3_5K8JEYjp^q2hj z7oT~ibj-_D)N#u89}~lU(zIeMa!x{ez9hR7j8*QINAY_6zDl4E-zXc^d#YZZ-Xx!hHZT<~2yZ^w9N&tkJ`ignsBmey@ zPNDb>ntyq$I3@6XW69NTYf%)qCKe!aND@IkvAdUzv)22JP?;3^LH~_1;1Xt=ur0lI zSS7TK!#uPhKDqbO4x~}%E(ims!2;wG2ul4}+D;SImK76DSjPk@*ZRz277@rps&6a>{ss2`whZe6TaLYV z*>VwE{iqbp@dmg?-C#l>V*i5C!9ytx+^rDb;9Rnntk;lh9ETL0FiDM=RfoljvE^x8 zjkJS+cr3N2_I;-YzM((RAvkR$^(R)=Qg8WfeRh{~J}P#oBb)}@Du&w5Jpt^|_ifB} z4;t+UAiVcc%gg6ee~XD-))Esj1xt*zF}&HnDRpu2a}Nm??=ow{qJIA7_211=Z&))v z{h)EPbq;9pMI4=Uj-3K$=iAF;cYub|qs}qlf**VS0lNvDCSWmb*yFad^3KxiPQuet z-B*1;+u0)a1beZL4OdOqE*`4#nwk1ZebqD$yZ5@hxUVB*GM%s*EUa~~vyT~y@rpSN zS=3k(n-@yCioPiY7DhWlp*$pCRBX|l9i8W&mbWdSx265g2-@2Kr7l;bI3wTG*3{w_ zf4-`zbB}&8`k>yoXwc+UU5}Xq%x=(?AO@I;6!y-dUV{e|c+iZABSv)7nk2B!ZJ+m) zzR#Vk;H+1F-M4ML%7oCLGJTfkp}#xF)+qVP{*kGdxM|oF(L@9HZwsFtwbagK<*^1* zH|LX?eXpYrLHt9Kc-m`II}5K6`#bw%^UKR&Lv2#W2Qgu8)uyk+)I~LRq!SjM^zQ)q z33g!`6|JYMi`WayMc?vb>l|3J?i_6<<>wtXcihwz)3ylso~)cpp9_%*t67@0f_2+Y zP#72G@V-K6zv+M>kDtpii{Mo6UmR?2mNQ8KzPp$U8rFrrs=Z?F;X-T}1#x~H1j9w)Z>9YQl& zTm8&Vj;F%Pv95^|erMRK=x(BG_z9xSI||6;i5mdQW%e@+D`k$w?Z`O2HW06%86Rsj zXgQ5XP%R%|-R|#1WFKDHpqcehGig3krdDLnh#5E3^NSvp!PKWOQXiQhg?JRB<=g+_A7blg5J#E zB|HUqkHfsGYeIR*OkWL8@cNopuUJ`eEY6)A)QN^|f3%sC61but$Vbo_k63C96I02x zSa1Ka+4W)+@5^}>;wE7E#yoUEw!T!rEY1{1Cvy$BJ{NlpP(Isl! zvQb^71tBXOm5UUZ?Md6An|P1)9F}aJ+d6t2V3mqYi}$%vlwqQ^}Hp%q@zvfOukfz z!thCX=7J=pFjaC@w2sO4fg8@=cQvJz-qiDP^(fX4!F3xCo(g}6(8d|GTfW5=E*PcU zFO=LlTJ&@6jV7W|u1{r*BD_mrAc^UtAYdZ;cv@nkR_Qgf+@n#)wTpnr^0c_~{SU;I z*emzwA$GUv%%}s9eP_Wba5N#el~lhpu^ z&uv_rLN8m#J-C-?C!PIHje^voxKuES7eq{tXpO=_d~f5`L+LV^pQ-g7!?go^qn2&a zn+`y8PYvIOZ4AQVYUAg3P%$I=`glG;k~_N2M%3ZRJe~&j#&YiRsg$p_*_9*qBFPRl zf%vN|(lo*!wRbB*vkY-XQYMr<oki+Eo-;lhBvROg)M1E#gfcpL8U)Myz$n2Blm z#ElviZB6d4b6Z1V?uF%Ebt#6Y$-NFPzZ|ya5w2f3F@l-N;7+qc&KqaeS2*9jC=T@# zidXzZk*>h^LdI%z)cvfeX7+2U)-?(LCtQ>DG6Q}(b^`-bxxu4HS0#Lflc2o7B9x7x z;h35q1%1W2OP9>6D1{VHkn>p6V>LUzcwJDl`4UDq@S`o(pm^v3?eYWj`jCaHG(NRQ zD%PUcY(vgGj8o!AJW$SqvgA0ZI!C4~-v_fVwxke0l22MChk1_-c70IBpG?@*jBBkA zAsP>ShD7(@IU>XJC^pi6OYIo}CAfMPYq=SD<*NgZl2*2}IHD2oom2Eow&WMcio|VB z>=MfzzbAx8%)@0o`7Y1DYJTV^UN@9Y&1IvX`*!>?${r@^1mARMD4UEWGkMKUy|vt{ z8In<7n!%)iP6{TjOO#D<4KiFIu2b%-xxVAm5f>%l#zCM#i_Ge+Rt~)dj4`uBs72;* zoQOu;=JPJ#taP_csYnw}A>v7!W-ly7jAD4#ErV?#UC8N1*MvK|@*Ig>vJy+FMJQ^E zdOMM8wD+js!u5*mCt1$L%z<0_qvYhJ%S=%xzMb8DFxet%hWn?K- zySrw|Az-~E+xs1g`{;Dws>3Y}o zN_%HinJZl(oF}>{6S^3<)SH*1+pDZ%p-oXST>hrsf^d^GiG+<+9#z- zU@Zd^-Pj+al;h-z>2l2OpP(3*iAdO7-Wku05>y!U3f^PNSNGh>&5{gOO+65|5|^jH z`9*nNDCddj;1f2>C+hmH6#}p2-VBX4XsQIKrr1@gmH<>tc%+5O)E-|yyeltZeIOT{ z7_0~RY_rrgiVNR;mk_8*&2WoS{(V}62bsL4n3#DFMQCQp2&o`~ujIX>{#zfiZHxD8 zUajp>YWt+^VewDi8v7AQaj+il@K73V_iIO+9YTWqGk!&nzbn1Frdn*NE4wMKqt4yZ zjoY>U=1K-2Q%2&;do$w7_%&bFn zT>cUx-R!+iO8nzj2Wel}&z#UjiL`CS@D2P3?{XTQL%gDPEv5iI9A0~05z2w;L(lU) zGceX<1~hxSob8M!5UD3oR~W#VHKRxAyI%Tq{`m4+tNZi~Yi;@gj(KH^_k+ie9kJ*; z%XV!Ct64P)Q7yMt@m)0o>~HbfU!}yySsudfTAnp6K9=%bOdy`PHAduOC+y_FYTDiw z%y*4njbFDpC}~uBF&%6so0r3NUfMrK9^5u;+bJ zD0ekVqb<+!^@tz*j2h(A7A>%RWHs~=~~k5 zV9fwI2L-0@yw6OdC+6aw-;w$5h<-J%2Ag-M@-X#k1#-Q*PltjsuchzdodhPVA&L1? zI4(D!=$?*nf4RH8azUwlf+UyD#d$e69(-Sk!k>W2Pvbo%`0ciW%Z=OK2h#Q{PQqea zk))|?fXM~tMB@6JVU~AK)B8V{(-2l#Y~=uuDoi%vBI2CLeQlKxefk}Id=1jKXqU5#@xjUwlNUN-)m7HPI zrAF^PBIo}yr<6+QH?_c6G}o`t-aIPJ{6zNJyLp}=@4}E=QDw@jPnGbUrk$DB@M*m* z82eA)4HZrnADOGkCSS-rU6ds8Gz4UdZ!Xb#4usrEgqKz|tq~X#oC3Ny&XJY}2m4}O z`(k>x=^xuar{O^HHL>yBJSQ(|xc_W9$SW|TjE!m=i}n_%*ocXvzZ@xh|dzzV?T6`&WMrSReY>_7GvAiMEA5vBb1L zRz4307Bg7#XkK`_maz#Frk{L6W{4h*iDil80LiwS*eVPPjB-Tfgxd5%ArN(32!tFw zF2MU4zn6=JbYJlGX#+gjn<9$XX5E( zHo&W*(izZgKH!-PFVx)FYXYPE2voiH68PCmMc1`Uhlp`FQbzh4Y#DlL3o>kL^XcLD zIBN=%I!6aAXKBsn^dM#N80JSxZeN459D_d|(_Ar)&+?Zv9dLv@lUd3Lh3z`A-B8_o z#L1dk#&~^FB&NXC+LuUM6NR`Q!uA%AO)!NU~y|ivg6)Zr$;^{AVnYO z$T%{cw6d1MP3o9r2DrkmU-eR=y~Ukc?{6jA{pMlBgIN|F1>!rJvWpwD6B}zAL;L8} z)uD+5CfdfKpOBj0n%@kT!o-)L8^<%dr&Ft2<%5G6Rg_WBy`)}RE6fX+Q`3ivye7M? z)0;^}QXk{6Ep*eK<5wA~ZxVnUJB)`j6Bm_zis=V%cx z(XQXqj#FB&l)G(6)b5R{a!fToGy!RSD1%pyfk2Q_$JEHy!yC{s5$b{`C4l%q0;dc}&f}}lQ{=s4QRpqC%ke{~C$jEX5}JzK zKW3u;zb7kzpaL%_gcY8h9P-Q+3Ej3O#fH55$SX)0mVfYoj!o-BG*o3!6!J*;5hsQV10cUGUg0M|9{Kw cU-t8#j?|HDXNovw-It>D=P&~8!#}tG2kinN;s5{u From e3c7436ae9b8e5f9663cafe281070c3edbd8b719 Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Fri, 3 Dec 2021 10:37:12 +0800 Subject: [PATCH 09/35] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E4=B8=8A=E6=8A=A5?= =?UTF-8?q?=E5=8F=91=E9=80=81mq=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../external/ScreenProjectDataCollController.java | 14 ++++++++++++++ .../com/epmet/opendata/entity/ExDeptEntity.java | 1 + .../com/epmet/opendata/service/ExDeptService.java | 2 +- .../com/epmet/opendata/service/ExUserService.java | 2 +- .../impl/BaseDisputeProcessServiceImpl.java | 4 ++-- .../opendata/service/impl/ExDeptServiceImpl.java | 4 ++-- .../opendata/service/impl/ExUserServiceImpl.java | 3 ++- 7 files changed, 23 insertions(+), 7 deletions(-) diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/external/ScreenProjectDataCollController.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/external/ScreenProjectDataCollController.java index 7d4c7e9c71..85dad1166f 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/external/ScreenProjectDataCollController.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/external/ScreenProjectDataCollController.java @@ -1,7 +1,9 @@ package com.epmet.controller.external; +import com.epmet.commons.rocketmq.messages.DisputeProcessMQMsg; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.constant.SystemMessageType; import com.epmet.dto.screen.*; import com.epmet.dto.screen.form.CategoryDictFormDTO; import com.epmet.dto.screen.form.ScreenProjectDataInfoFormDTO; @@ -13,6 +15,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.ArrayList; +import java.util.List; + /** * @Description 事件/项目采集接口入口 * @ClassName ScreenProjectDataCollController @@ -135,6 +140,15 @@ public class ScreenProjectDataCollController { param.setCustomerId(customerId); ValidatorUtils.validateEntity(param, ScreenCollFormDTO.CustomerIdShowGroup.class, ScreenCollFormDTO.DateIdShowGroup.class, ScreenCollFormDTO.DataListShowGroup.class); projectDataService.collect(param); + + //发送MQ消息,上报事件 + param.getDataList().forEach(item -> { + List projectList = new ArrayList<>(); + projectList.add(item.getProjectId()); + DisputeProcessMQMsg msg = new DisputeProcessMQMsg(param.getCustomerId(), projectList, SystemMessageType.PROJECT_ADD); + projectDataService.sendProjectChangeMq(msg); + }); + return new Result(); } diff --git a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/entity/ExDeptEntity.java b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/entity/ExDeptEntity.java index d13b6d62fe..6289b6ead1 100644 --- a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/entity/ExDeptEntity.java +++ b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/entity/ExDeptEntity.java @@ -34,6 +34,7 @@ public class ExDeptEntity { private static final long serialVersionUID = 1L; + private String customerId; /** * (市平台)部门id */ diff --git a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/ExDeptService.java b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/ExDeptService.java index 9a2c815fbd..15fbf4657b 100644 --- a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/ExDeptService.java +++ b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/ExDeptService.java @@ -32,7 +32,7 @@ import java.util.Map; public interface ExDeptService extends BaseService { - Map getDeptMap(); + Map getDeptMap(String customerId); /** * @Author sun diff --git a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/ExUserService.java b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/ExUserService.java index bb990943f3..cdbe5cbaad 100644 --- a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/ExUserService.java +++ b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/ExUserService.java @@ -31,7 +31,7 @@ import java.util.Map; */ public interface ExUserService extends BaseService { - Map getUserMap(); + Map getUserMap(String customerId); /** * @Author sun diff --git a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/BaseDisputeProcessServiceImpl.java b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/BaseDisputeProcessServiceImpl.java index 609295a770..f05c5794ba 100644 --- a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/BaseDisputeProcessServiceImpl.java +++ b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/BaseDisputeProcessServiceImpl.java @@ -74,8 +74,8 @@ public class BaseDisputeProcessServiceImpl extends BaseServiceImpl deptMap = exDeptService.getDeptMap(); - Map userMap = exUserService.getUserMap(); + Map deptMap = exDeptService.getDeptMap(formDTO.getCustomerId()); + Map userMap = exUserService.getUserMap(formDTO.getCustomerId()); List list = result.getData(); saveEvent(formDTO, deptMap, userMap, list); //分批次循环 diff --git a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/ExDeptServiceImpl.java b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/ExDeptServiceImpl.java index 755b6a39bc..f2af239f8a 100644 --- a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/ExDeptServiceImpl.java +++ b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/ExDeptServiceImpl.java @@ -54,9 +54,9 @@ public class ExDeptServiceImpl extends BaseServiceImpl @Override - public Map getDeptMap() { + public Map getDeptMap(String customerId) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.isNotNull(ExDeptEntity::getGridCode); + wrapper.eq(ExDeptEntity::getQxCustomerId, customerId); List entityList = baseDao.selectList(wrapper); if (CollectionUtils.isEmpty(entityList)) { return Collections.emptyMap(); diff --git a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/ExUserServiceImpl.java b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/ExUserServiceImpl.java index 9d5f78e86e..55dfb4d3a8 100644 --- a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/ExUserServiceImpl.java +++ b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/ExUserServiceImpl.java @@ -51,8 +51,9 @@ public class ExUserServiceImpl extends BaseServiceImpl private DataStatisticalOpenFeignClient dataStatisticalOpenFeignClient; @Override - public Map getUserMap() { + public Map getUserMap(String customerId) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(ExUserEntity::getQxCustomerId, customerId); List list = baseDao.selectList(wrapper); if (CollectionUtils.isEmpty(list)) { return Collections.emptyMap(); From 526bcc7652bdcf0ea69cf0ef77a38e36a985eb8f Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Fri, 3 Dec 2021 10:56:06 +0800 Subject: [PATCH 10/35] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E4=B8=8A=E6=8A=A5?= =?UTF-8?q?=E5=8F=91=E9=80=81mq=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/epmet/opendata/entity/ExDeptEntity.java | 1 - 1 file changed, 1 deletion(-) diff --git a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/entity/ExDeptEntity.java b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/entity/ExDeptEntity.java index 6289b6ead1..d13b6d62fe 100644 --- a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/entity/ExDeptEntity.java +++ b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/entity/ExDeptEntity.java @@ -34,7 +34,6 @@ public class ExDeptEntity { private static final long serialVersionUID = 1L; - private String customerId; /** * (市平台)部门id */ From f2ae9bf7a3c5699d31283567fe915091c7a532fa Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Fri, 3 Dec 2021 14:04:32 +0800 Subject: [PATCH 11/35] =?UTF-8?q?=E4=BA=8B=E4=BB=B6=E4=B8=8A=E6=8A=A5?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/service/impl/DataReportingServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DataReportingServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DataReportingServiceImpl.java index 7f5d1eb9eb..4ad4614efa 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DataReportingServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DataReportingServiceImpl.java @@ -199,7 +199,7 @@ public class DataReportingServiceImpl implements DataReportingService { CustomerProjectCategoryDictEntity categoryEntity = codeMap.get(categoryCode); if (null != categoryEntity) { categoryCode = categoryEntity.getEpmetCategoryCode(); - parentCode = epmetCodeMap.get(categoryEntity.getEpmetCategoryCode()).getParentCategoryCode(); + parentCode = null == epmetCodeMap.get(categoryCode)?null:epmetCodeMap.get(categoryCode).getParentCategoryCode(); } else { categoryCode = null; parentCode = null; From e9045130866d8094b64c224b508544b738c1014d Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Fri, 3 Dec 2021 15:09:59 +0800 Subject: [PATCH 12/35] =?UTF-8?q?=E4=BA=8B=E4=BB=B6=E4=B8=8A=E6=8A=A5?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=20=E4=B8=8A=E6=8A=A5=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E4=B8=80=E7=BA=A7=E4=BA=8C=E7=BA=A7=E5=88=86=E7=B1=BB=E8=AE=BE?= =?UTF-8?q?=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/DataReportingServiceImpl.java | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DataReportingServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DataReportingServiceImpl.java index 4ad4614efa..2e4f9c7aeb 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DataReportingServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DataReportingServiceImpl.java @@ -1,5 +1,6 @@ package com.epmet.service.impl; +import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.utils.Result; @@ -198,8 +199,22 @@ public class DataReportingServiceImpl implements DataReportingService { "46c55cb862d6d5e6d05d2ab61a1cc07e".equals(project.getCustomerId())) { CustomerProjectCategoryDictEntity categoryEntity = codeMap.get(categoryCode); if (null != categoryEntity) { - categoryCode = categoryEntity.getEpmetCategoryCode(); - parentCode = null == epmetCodeMap.get(categoryCode)?null:epmetCodeMap.get(categoryCode).getParentCategoryCode(); + String code = categoryEntity.getEpmetCategoryCode(); + if (StringUtils.isBlank(code)) { + //没有对应平阴的分类code,那么一级分类和二级分类都为空 + categoryCode = null; + parentCode = null; + } else { + //如果是对应一级分类,则二级分类为空。如果对应平阴二级分类,则取对应的一级分类 + CustomerProjectCategoryDictEntity epmetCode = epmetCodeMap.get(code); + if (NumConstant.ONE == epmetCode.getLevel()) { + categoryCode = null; + parentCode = code; + } else { + categoryCode = code; + parentCode = epmetCode.getParentCategoryCode(); + } + } } else { categoryCode = null; parentCode = null; From e9d3b1b9d4e00599c39fe28816302b69e4cb45be Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Fri, 3 Dec 2021 16:29:36 +0800 Subject: [PATCH 13/35] =?UTF-8?q?=E4=BA=8B=E4=BB=B6=E4=B8=8A=E6=8A=A5?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=20=E4=B8=8A=E6=8A=A5=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E4=B8=80=E7=BA=A7=E4=BA=8C=E7=BA=A7=E5=88=86=E7=B1=BB=E8=AE=BE?= =?UTF-8?q?=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/service/impl/DataReportingServiceImpl.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DataReportingServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DataReportingServiceImpl.java index 2e4f9c7aeb..5e2b9830e7 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DataReportingServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DataReportingServiceImpl.java @@ -142,13 +142,14 @@ public class DataReportingServiceImpl implements DataReportingService { Map epmetCodeMap = new HashMap<>(); Result parentCustomer = operCrmOpenFeignClient.getExternalAndParentCustomerId(formDTO.getCustomerId()); if (StringUtils.isNotBlank(parentCustomer.getData())) { - customerProjectCategoryDictService.getByCategoryCodeMap(parentCustomer.getData()); + epmetCodeMap = customerProjectCategoryDictService.getByCategoryCodeMap(parentCustomer.getData()); } Map codeMap = customerProjectCategoryDictService.getByCategoryCodeMap(formDTO.getCustomerId());; //项目ID不为空时,因为只有一条,可以直接处理 + Map finalEpmetCodeMap = epmetCodeMap; if (CollectionUtils.isNotEmpty(formDTO.getProjectId())) { list = projectList.stream().map(project -> { - EventInfoResultDTO dto = getEventInfoResultDTO(project, epmetCodeMap, codeMap); + EventInfoResultDTO dto = getEventInfoResultDTO(project, finalEpmetCodeMap, codeMap); if (OrgTypeConstant.AGENCY.equals(project.getOrgType())) { ScreenCustomerAgencyEntity agency = screenCustomerAgencyService.getAgencyById(project.getOrgId()); dto.setOrgId(project.getOrgId()); @@ -167,7 +168,7 @@ public class DataReportingServiceImpl implements DataReportingService { Map agencyMap = screenCustomerAgencyService.getAgencyList(formDTO.getCustomerId()); Map gridMap = screenCustomerGridService.getGridList(formDTO.getCustomerId()); list = projectList.stream().map(project -> { - EventInfoResultDTO dto = getEventInfoResultDTO(project, epmetCodeMap, codeMap); + EventInfoResultDTO dto = getEventInfoResultDTO(project, finalEpmetCodeMap, codeMap); if (OrgTypeConstant.AGENCY.equals(project.getOrgType())) { ScreenCustomerAgencyEntity agency = agencyMap.get(project.getOrgId()); dto.setOrgId(project.getOrgId()); @@ -182,7 +183,7 @@ public class DataReportingServiceImpl implements DataReportingService { return dto; }).collect(Collectors.toList()); } - return list.stream().filter(item -> StringUtils.isNotBlank(item.getEventCategory())).collect(Collectors.toList()); + return list.stream().filter(item -> StringUtils.isNotBlank(item.getParentEventCategory())).collect(Collectors.toList()); } private EventInfoResultDTO getEventInfoResultDTO(ScreenProjectDataDTO project, Map epmetCodeMap, Map codeMap) { From 13cea0e90e63a1aa3ac4855bfe775e14c22ba0d1 Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Fri, 3 Dec 2021 17:55:47 +0800 Subject: [PATCH 14/35] =?UTF-8?q?=E4=BA=8B=E4=BB=B6=E4=B8=8A=E6=8A=A5?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=20=E5=8E=BB=E9=87=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/service/impl/DataReportingServiceImpl.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DataReportingServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DataReportingServiceImpl.java index 5e2b9830e7..1387f58df1 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DataReportingServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DataReportingServiceImpl.java @@ -41,6 +41,9 @@ import javax.annotation.Resource; import java.util.*; import java.util.stream.Collectors; +import static java.util.stream.Collectors.collectingAndThen; +import static java.util.stream.Collectors.toCollection; + /** * @dscription 省网格化平台数据上报--数据查询 * @author sun @@ -183,7 +186,7 @@ public class DataReportingServiceImpl implements DataReportingService { return dto; }).collect(Collectors.toList()); } - return list.stream().filter(item -> StringUtils.isNotBlank(item.getParentEventCategory())).collect(Collectors.toList()); + return list.stream().collect(collectingAndThen(toCollection(() -> new TreeSet<>(Comparator.comparing(EventInfoResultDTO::getId))), ArrayList::new)); } private EventInfoResultDTO getEventInfoResultDTO(ScreenProjectDataDTO project, Map epmetCodeMap, Map codeMap) { From 2df33dd3cbf5a675a93afb65c328669fddf02b76 Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Fri, 3 Dec 2021 18:54:04 +0800 Subject: [PATCH 15/35] =?UTF-8?q?=E4=BA=8B=E4=BB=B6=E4=B8=8A=E6=8A=A5?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/DataReportingServiceImpl.java | 50 ++++++++++++------- 1 file changed, 31 insertions(+), 19 deletions(-) diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DataReportingServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DataReportingServiceImpl.java index 1387f58df1..e3057c2a8e 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DataReportingServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DataReportingServiceImpl.java @@ -156,13 +156,17 @@ public class DataReportingServiceImpl implements DataReportingService { if (OrgTypeConstant.AGENCY.equals(project.getOrgType())) { ScreenCustomerAgencyEntity agency = screenCustomerAgencyService.getAgencyById(project.getOrgId()); dto.setOrgId(project.getOrgId()); - dto.setOrgCode(agency.getCode()); - dto.setOrgName(agency.getAgencyName()); + if (null != agency) { + dto.setOrgCode(agency.getCode()); + dto.setOrgName(agency.getAgencyName()); + } } else { ScreenCustomerGridDTO grid = screenCustomerGridService.getGridById(project.getOrgId()); dto.setOrgId(project.getOrgId()); - dto.setOrgCode(grid.getCode()); - dto.setOrgName(grid.getGridName()); + if (null != grid) { + dto.setOrgCode(grid.getCode()); + dto.setOrgName(grid.getGridName()); + } } return dto; }).collect(Collectors.toList()); @@ -175,13 +179,17 @@ public class DataReportingServiceImpl implements DataReportingService { if (OrgTypeConstant.AGENCY.equals(project.getOrgType())) { ScreenCustomerAgencyEntity agency = agencyMap.get(project.getOrgId()); dto.setOrgId(project.getOrgId()); - dto.setOrgCode(agency.getCode()); - dto.setOrgName(agency.getAgencyName()); + if (null != agency) { + dto.setOrgCode(agency.getCode()); + dto.setOrgName(agency.getAgencyName()); + } } else { ScreenCustomerGridDTO grid = gridMap.get(project.getOrgId()); dto.setOrgId(project.getOrgId()); - dto.setOrgCode(grid.getCode()); - dto.setOrgName(grid.getGridName()); + if (null != grid) { + dto.setOrgCode(grid.getCode()); + dto.setOrgName(grid.getGridName()); + } } return dto; }).collect(Collectors.toList()); @@ -237,16 +245,18 @@ public class DataReportingServiceImpl implements DataReportingService { if (OrgTypeConstant.AGENCY.equals(project.getFinishOrgType())) { //如果是孔村的项目办结层级需要降一级 if("2fe0065f70ca0e23ce4c26fca5f1d933".equals(project.getCustomerId())) { - switch (project.getFinishOrgLevel()) { - case OrgTypeConstant.DISTRICT: - dto.setCompleteLevel("3"); - break; - case OrgTypeConstant.STREET: - case OrgTypeConstant.COMMUNITY: - dto.setCompleteLevel("4"); - break; - default: - break; + if (StringUtils.isNotBlank(project.getFinishOrgLevel())) { + switch (project.getFinishOrgLevel()) { + case OrgTypeConstant.DISTRICT: + dto.setCompleteLevel("3"); + break; + case OrgTypeConstant.STREET: + case OrgTypeConstant.COMMUNITY: + dto.setCompleteLevel("4"); + break; + default: + break; + } } } else { dto.setCompleteLevel(getCompleteLevel(project.getFinishOrgLevel())); @@ -256,7 +266,9 @@ public class DataReportingServiceImpl implements DataReportingService { String[] orgIds = project.getOrgIdPath().split(StrConstant.COLON); int size = orgIds.length; ScreenCustomerAgencyEntity agency = screenCustomerAgencyService.getAgencyById(orgIds[size - 1]); - dto.setCompleteLevel(getCompleteLevel(agency.getLevel())); + if (null != agency) { + dto.setCompleteLevel(getCompleteLevel(agency.getLevel())); + } } else { //办结组织是网格时,办结层级为网格 dto.setCompleteLevel("5"); From 6919f4dfb035c41a34b93f98e0af064b2b7fcee5 Mon Sep 17 00:00:00 2001 From: jianjun Date: Fri, 3 Dec 2021 19:08:10 +0800 Subject: [PATCH 16/35] =?UTF-8?q?dept=20=E5=88=A0=E9=99=A4=E5=AE=A2?= =?UTF-8?q?=E6=88=B7ID?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/epmet/opendata/service/ExDeptService.java | 4 ++-- .../opendata/service/impl/BaseDisputeProcessServiceImpl.java | 2 +- .../com/epmet/opendata/service/impl/ExDeptServiceImpl.java | 5 ++--- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/ExDeptService.java b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/ExDeptService.java index 15fbf4657b..2fa094af92 100644 --- a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/ExDeptService.java +++ b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/ExDeptService.java @@ -32,7 +32,7 @@ import java.util.Map; public interface ExDeptService extends BaseService { - Map getDeptMap(String customerId); + Map getDeptMap(); /** * @Author sun @@ -46,4 +46,4 @@ public interface ExDeptService extends BaseService { **/ void getGridBaseInfo(ExDeptFormDTO formDTO); -} \ No newline at end of file +} diff --git a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/BaseDisputeProcessServiceImpl.java b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/BaseDisputeProcessServiceImpl.java index f05c5794ba..63211e253f 100644 --- a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/BaseDisputeProcessServiceImpl.java +++ b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/BaseDisputeProcessServiceImpl.java @@ -74,7 +74,7 @@ public class BaseDisputeProcessServiceImpl extends BaseServiceImpl deptMap = exDeptService.getDeptMap(formDTO.getCustomerId()); + Map deptMap = exDeptService.getDeptMap(); Map userMap = exUserService.getUserMap(formDTO.getCustomerId()); List list = result.getData(); saveEvent(formDTO, deptMap, userMap, list); diff --git a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/ExDeptServiceImpl.java b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/ExDeptServiceImpl.java index f2af239f8a..4c95ca47b5 100644 --- a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/ExDeptServiceImpl.java +++ b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/ExDeptServiceImpl.java @@ -54,9 +54,8 @@ public class ExDeptServiceImpl extends BaseServiceImpl @Override - public Map getDeptMap(String customerId) { + public Map getDeptMap() { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(ExDeptEntity::getQxCustomerId, customerId); List entityList = baseDao.selectList(wrapper); if (CollectionUtils.isEmpty(entityList)) { return Collections.emptyMap(); @@ -136,4 +135,4 @@ public class ExDeptServiceImpl extends BaseServiceImpl } -} \ No newline at end of file +} From ed26003e92547617c251104ea06f071226dd2960 Mon Sep 17 00:00:00 2001 From: jianjun Date: Sat, 4 Dec 2021 14:23:10 +0800 Subject: [PATCH 17/35] =?UTF-8?q?=E6=8B=AC=E5=8F=B7=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/ExUserDao.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/epmet-module/open-data-worker/open-data-worker-server/src/main/resources/mapper/ExUserDao.xml b/epmet-module/open-data-worker/open-data-worker-server/src/main/resources/mapper/ExUserDao.xml index fedbbf35a7..3d904577fd 100644 --- a/epmet-module/open-data-worker/open-data-worker-server/src/main/resources/mapper/ExUserDao.xml +++ b/epmet-module/open-data-worker/open-data-worker-server/src/main/resources/mapper/ExUserDao.xml @@ -33,9 +33,9 @@ WHERE 1=1 - + (qx_user_id = #{item.qxUserId} ) - \ No newline at end of file + From d7c930563aca98e882ff04b40e5d1bd0738fa6d3 Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Sat, 4 Dec 2021 15:18:01 +0800 Subject: [PATCH 18/35] =?UTF-8?q?bug=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/opendata/service/impl/ExUserServiceImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/ExUserServiceImpl.java b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/ExUserServiceImpl.java index 55dfb4d3a8..a9eca96dac 100644 --- a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/ExUserServiceImpl.java +++ b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/ExUserServiceImpl.java @@ -83,6 +83,7 @@ public class ExUserServiceImpl extends BaseServiceImpl entity.setQxUserName(r.getNickName()); entity.setQxMobile(r.getPhonenumber()); entity.setQxCustomerId(formDTO.getCustomerId()); + entityList.add(entity); }); //3.更新数据,不能新增,市平台信息表中必填的 From 492bf3e879e9f4d143cc974b5cb6a63aa0dcda49 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Mon, 6 Dec 2021 14:00:25 +0800 Subject: [PATCH 19/35] =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E6=8E=AA=E6=96=BD?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E6=94=B9=E6=9F=A5admin?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../commons/tools/enums/DictTypeEnum.java | 3 ++ .../form/demand/IcResiUserDemandFromDTO.java | 4 +++ .../demand/IcResiUserReportDemandRes.java | 23 +++++++++++++ .../impl/IcUserDemandRecServiceImpl.java | 32 +++++++++++++++---- 4 files changed, 55 insertions(+), 7 deletions(-) diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/DictTypeEnum.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/DictTypeEnum.java index fc40fcae64..478e7d4376 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/DictTypeEnum.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/DictTypeEnum.java @@ -16,6 +16,9 @@ public enum DictTypeEnum { SCALE("scale", "人员规模", 6), PARTY_UNIT_TYPE("party_unit_type", "联建单位分类", 7), GENDER("gender", "性别", 8), + USER_DEMAND_STATUS("user_demand_status", "居民需求状态",8), + USER_DEMAND_REPORT_TYPE("user_demand_report_type","居民需求上报类型",9), + USER_DEMAND_SERVICE_TYPE("user_demand_service_type","居民需求服务方类型",10) ; private final String code; diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/IcResiUserDemandFromDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/IcResiUserDemandFromDTO.java index de813e286f..a10a81667f 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/IcResiUserDemandFromDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/IcResiUserDemandFromDTO.java @@ -11,6 +11,10 @@ public class IcResiUserDemandFromDTO implements Serializable { public interface AddUserInternalGroup { } + + /** + * 居民信息录入的居民的id + */ @NotBlank(message = "userId不能为空", groups = AddUserInternalGroup.class) private String userId; @NotNull(message = "pageNo不能为空", groups = AddUserInternalGroup.class) diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/IcResiUserReportDemandRes.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/IcResiUserReportDemandRes.java index 079ed8ce0d..e4792920b3 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/IcResiUserReportDemandRes.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/IcResiUserReportDemandRes.java @@ -1,10 +1,33 @@ package com.epmet.dto.result.demand; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; import java.io.Serializable; +import java.util.Date; @Data public class IcResiUserReportDemandRes implements Serializable { private static final long serialVersionUID = 7043350476644105434L; + + private String demandRecId; + + @JsonIgnore + private String categoryCode; + + @JsonIgnore + private String parentCode; + + private String categoryName; + + private String content; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8") + private Date wantServiceTime; + + @JsonIgnore + private String status; + + private String statusName; } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcUserDemandRecServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcUserDemandRecServiceImpl.java index 677fcb64b1..90b40cbf70 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcUserDemandRecServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcUserDemandRecServiceImpl.java @@ -24,6 +24,7 @@ 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.enums.DictTypeEnum; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.page.PageData; @@ -43,6 +44,7 @@ import com.epmet.dto.result.AllGridsByUserIdResultDTO; import com.epmet.dto.result.UserBaseInfoResultDTO; import com.epmet.dto.result.demand.DemandRecResultDTO; import com.epmet.entity.*; +import com.epmet.feign.EpmetAdminOpenFeignClient; import com.epmet.feign.EpmetUserOpenFeignClient; import com.epmet.feign.GovOrgOpenFeignClient; import com.epmet.service.IcResiDemandDictService; @@ -50,6 +52,7 @@ import com.epmet.service.IcUserDemandRecService; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -79,7 +82,8 @@ public class IcUserDemandRecServiceImpl extends BaseServiceImpl page(Map params) { @@ -238,6 +242,17 @@ public class IcUserDemandRecServiceImpl extends BaseServiceImpl> reportTypeRes=adminOpenFeignClient.dictMap(DictTypeEnum.USER_DEMAND_REPORT_TYPE.getCode()); + Map reportTypeMap=reportTypeRes.success()&& MapUtils.isNotEmpty(reportTypeRes.getData())?reportTypeRes.getData():new HashMap<>(); + + Result> statusRes=adminOpenFeignClient.dictMap(DictTypeEnum.USER_DEMAND_STATUS.getCode()); + Map statusMap=statusRes.success()&& MapUtils.isNotEmpty(statusRes.getData())?statusRes.getData():new HashMap<>(); + + Result> serviceTypeRes=adminOpenFeignClient.dictMap(DictTypeEnum.USER_DEMAND_SERVICE_TYPE.getCode()); + Map serviceTypeMap=serviceTypeRes.success()&& MapUtils.isNotEmpty(serviceTypeRes.getData())?serviceTypeRes.getData():new HashMap<>(); + for(DemandRecResultDTO res:list){ if (null != gridInfoMap && gridInfoMap.containsKey(res.getGridId())) { res.setGridName(gridInfoMap.get(res.getGridId()).getGridName()); @@ -251,7 +266,8 @@ public class IcUserDemandRecServiceImpl extends BaseServiceImpl(list, pageInfo.getTotal()); From 42dc117de6639e2ae094bddd0e60771607e21082 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Mon, 6 Dec 2021 15:43:01 +0800 Subject: [PATCH 20/35] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E6=8E=AA=E6=96=BD=E5=88=97=E8=A1=A8=E6=9F=A5=E8=AF=A2=EF=BC=8C?= =?UTF-8?q?=E9=9C=80=E6=B1=82=E8=AF=A6=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/form/demand/DemandDetailFormDTO.java | 20 +++++ .../form/demand/IcResiUserDemandFromDTO.java | 4 + .../controller/IcUserDemandRecController.java | 30 +++++-- .../com/epmet/dao/IcResiDemandDictDao.java | 1 + .../com/epmet/dao/IcUserDemandRecDao.java | 20 +++++ .../service/IcResiDemandDictService.java | 9 ++ .../epmet/service/IcUserDemandRecService.java | 17 ++++ .../impl/IcResiDemandDictServiceImpl.java | 14 +++ .../impl/IcUserDemandRecServiceImpl.java | 87 ++++++++++++++++++- .../resources/mapper/IcResiDemandDictDao.xml | 13 +++ .../resources/mapper/IcUserDemandRecDao.xml | 63 ++++++++++++++ 11 files changed, 272 insertions(+), 6 deletions(-) create mode 100644 epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/DemandDetailFormDTO.java diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/DemandDetailFormDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/DemandDetailFormDTO.java new file mode 100644 index 0000000000..25ec764f3f --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/DemandDetailFormDTO.java @@ -0,0 +1,20 @@ +package com.epmet.dto.form.demand; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +@Data +public class DemandDetailFormDTO implements Serializable { + private static final long serialVersionUID = 514538389753713095L; + public interface AddUserInternalGroup { + } + + @NotBlank(message = "demandRecId不能为空", groups = AddUserInternalGroup.class) + private String demandRecId; + + + @NotBlank(message = "tokenDto获取客户id不能为空", groups = IcResiUserDemandFromDTO.AddUserInternalGroup.class) + private String customerId; +} diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/IcResiUserDemandFromDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/IcResiUserDemandFromDTO.java index a10a81667f..0a3382d3d3 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/IcResiUserDemandFromDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/IcResiUserDemandFromDTO.java @@ -21,4 +21,8 @@ public class IcResiUserDemandFromDTO implements Serializable { private Integer pageNo; @NotNull(message = "pageSize不能为空", groups = AddUserInternalGroup.class) private Integer pageSize; + + + @NotBlank(message = "tokenDto获取客户id不能为空", groups = AddUserInternalGroup.class) + private String customerId; } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcUserDemandRecController.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcUserDemandRecController.java index 27b340c61c..9ce587e7b3 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcUserDemandRecController.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcUserDemandRecController.java @@ -184,13 +184,33 @@ public class IcUserDemandRecController { /** - * 数据分析-个人档案,居民需求列表 - * @param fromDTO + * 数据分析-个人档案,居民需求列表table + * + * @param formDTO * @return */ @PostMapping("mydemand") - public Result> queryMyDemand(@RequestBody IcResiUserDemandFromDTO fromDTO){ - ValidatorUtils.validateEntity(fromDTO,IcResiUserDemandFromDTO.AddUserInternalGroup.class); - return null; + public Result> queryMyDemand(@LoginUser TokenDto tokenDto,@RequestBody IcResiUserDemandFromDTO formDTO){ + formDTO.setCustomerId(tokenDto.getCustomerId()); + ValidatorUtils.validateEntity(formDTO,IcResiUserDemandFromDTO.AddUserInternalGroup.class); + return new Result>().ok(icUserDemandRecService.queryMyDemand(formDTO)); } + + /** + * 数据分析-个人档案、居民需求列表-查看需求详情 + * + * @param formDTO + * @return + */ + @PostMapping("demandDetail") + public Result queryDemandDetail(@LoginUser TokenDto tokenDto, @RequestBody DemandDetailFormDTO formDTO){ + formDTO.setCustomerId(tokenDto.getCustomerId()); + ValidatorUtils.validateEntity(formDTO,DemandDetailFormDTO.AddUserInternalGroup.class); + return new Result().ok(icUserDemandRecService.queryDemandDetail(formDTO)); + } + + + + + } \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcResiDemandDictDao.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcResiDemandDictDao.java index cf2625d680..ed09bfd858 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcResiDemandDictDao.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcResiDemandDictDao.java @@ -65,4 +65,5 @@ public interface IcResiDemandDictDao extends BaseDao { List selectSecondCodes(@Param("customerId") String customerId, @Param("cateogryCodes") List categoryCodes); + String selectNameByCode(@Param("customerId")String customerId, @Param("categoryCode") String categoryCode); } \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcUserDemandRecDao.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcUserDemandRecDao.java index 12bc2f68b4..a06f831778 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcUserDemandRecDao.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcUserDemandRecDao.java @@ -18,10 +18,13 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.form.demand.IcResiUserDemandFromDTO; import com.epmet.dto.form.demand.UserDemandPageFormDTO; import com.epmet.dto.result.demand.DemandRecResultDTO; +import com.epmet.dto.result.demand.IcResiUserReportDemandRes; import com.epmet.entity.IcUserDemandRecEntity; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -36,4 +39,21 @@ public interface IcUserDemandRecDao extends BaseDao { List pageSelect(UserDemandPageFormDTO formDTO); + + /** + * 数据分析-个人档案,居民需求列表table + * + * @param formDTO + * @return + */ + List selectUserDemand(IcResiUserDemandFromDTO formDTO); + + /** + * 数据分析-个人档案,居民需求详情 + * + * @param customerId + * @param demandRecId + * @return + */ + DemandRecResultDTO selectDemandRecDetail(@Param("customerId") String customerId, @Param("demandRecId") String demandRecId); } \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcResiDemandDictService.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcResiDemandDictService.java index 3836539181..ce9c4741a7 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcResiDemandDictService.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcResiDemandDictService.java @@ -109,4 +109,13 @@ public interface IcResiDemandDictService extends BaseService listByCodes(String customerId, List categoryCodes); + + /** + * 查询当前分类的名称 + * + * @param customerId + * @param categoryCode + * @return + */ + String getCategoryName(String customerId, String categoryCode); } \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcUserDemandRecService.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcUserDemandRecService.java index a0b3799d4e..e3b719615e 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcUserDemandRecService.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcUserDemandRecService.java @@ -22,6 +22,7 @@ import com.epmet.commons.tools.page.PageData; import com.epmet.dto.IcUserDemandRecDTO; import com.epmet.dto.form.demand.*; import com.epmet.dto.result.demand.DemandRecResultDTO; +import com.epmet.dto.result.demand.IcResiUserReportDemandRes; import com.epmet.entity.IcUserDemandRecEntity; import java.util.List; @@ -127,4 +128,20 @@ public interface IcUserDemandRecService extends BaseService queryMyDemand(IcResiUserDemandFromDTO formDTO); + + /** + * 数据分析-个人档案、居民需求列表-查看需求详情 + * + * @param formDTO + * @return + */ + DemandRecResultDTO queryDemandDetail(DemandDetailFormDTO formDTO); } \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcResiDemandDictServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcResiDemandDictServiceImpl.java index 4fd9a2b193..520e367177 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcResiDemandDictServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcResiDemandDictServiceImpl.java @@ -21,6 +21,7 @@ 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.OptionResultDTO; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.RenException; @@ -227,5 +228,18 @@ public class IcResiDemandDictServiceImpl extends BaseServiceImpl queryMyDemand(IcResiUserDemandFromDTO formDTO) { + PageInfo pageInfo = PageHelper.startPage(formDTO.getPageNo(), + formDTO.getPageSize()).doSelectPageInfo(() -> baseDao.selectUserDemand(formDTO)); + List list = pageInfo.getList(); + if (CollectionUtils.isNotEmpty(list)) { + // 1、状态字典 + Result> statusRes = adminOpenFeignClient.dictMap(DictTypeEnum.USER_DEMAND_STATUS.getCode()); + Map statusMap = statusRes.success() && MapUtils.isNotEmpty(statusRes.getData()) ? statusRes.getData() : new HashMap<>(); + //2、查询分类名称 + List categoryCodes = list.stream().map(IcResiUserReportDemandRes::getCategoryCode).collect(Collectors.toList()); + List dictList = demandDictService.listByCodes(formDTO.getCustomerId(), categoryCodes); + Map dictMap = dictList.stream().collect(Collectors.toMap(IcResiDemandDictEntity::getCategoryCode, IcResiDemandDictEntity::getCategoryName)); + + for (IcResiUserReportDemandRes resDto : list) { + resDto.setStatusName(statusMap.containsKey(resDto.getStatus()) ? statusMap.get(resDto.getStatus()) : StrConstant.EPMETY_STR); + if (null != dictMap && dictMap.containsKey(resDto.getCategoryCode())) { + resDto.setCategoryName(dictMap.get(resDto.getCategoryCode())); + } + } + } + return new PageData<>(list, pageInfo.getTotal()); + } + + /** + * 数据分析-个人档案、居民需求列表-查看需求详情 + * + * @param formDTO + * @return + */ + @Override + public DemandRecResultDTO queryDemandDetail(DemandDetailFormDTO formDTO) { + DemandRecResultDTO res = baseDao.selectDemandRecDetail(formDTO.getCustomerId(), formDTO.getDemandRecId()); + if (null != res) { + CustomerGridFormDTO customerGridFormDTO = new CustomerGridFormDTO(); + customerGridFormDTO.setGridId(res.getGridId()); + Result gridInfoRes = govOrgOpenFeignClient.getGridBaseInfoByGridId(customerGridFormDTO); + res.setGridName(gridInfoRes.success() && null != gridInfoRes.getData() ? gridInfoRes.getData().getGridNamePath() : StrConstant.EPMETY_STR); + + res.setCategoryName(demandDictService.getCategoryName(formDTO.getCustomerId(), res.getCategoryCode())); + if (UserDemandConstant.VOLUNTEER.equals(res.getServiceType())) { + // 如果服务方是志愿者,需要查询小程序端的志愿者姓名 + List userIdList = Arrays.asList(res.getServerId()); + Result> userInfoRes = epmetUserOpenFeignClient.queryUserBaseInfo(userIdList); + if (!userInfoRes.success() || CollectionUtils.isEmpty(userInfoRes.getData())) { + throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), "查询志愿者信息异常"); + } + res.setServiceName(userInfoRes.getData().get(NumConstant.ZERO).getRealName()); + } + //查询字典表 + Result> reportTypeRes = adminOpenFeignClient.dictMap(DictTypeEnum.USER_DEMAND_REPORT_TYPE.getCode()); + Map reportTypeMap = reportTypeRes.success() && MapUtils.isNotEmpty(reportTypeRes.getData()) ? reportTypeRes.getData() : new HashMap<>(); + + Result> statusRes = adminOpenFeignClient.dictMap(DictTypeEnum.USER_DEMAND_STATUS.getCode()); + Map statusMap = statusRes.success() && MapUtils.isNotEmpty(statusRes.getData()) ? statusRes.getData() : new HashMap<>(); + + Result> serviceTypeRes = adminOpenFeignClient.dictMap(DictTypeEnum.USER_DEMAND_SERVICE_TYPE.getCode()); + Map serviceTypeMap = serviceTypeRes.success() && MapUtils.isNotEmpty(serviceTypeRes.getData()) ? serviceTypeRes.getData() : new HashMap<>(); + + //社区帮办:community;楼长帮办:building_caption;党员帮办:party;自身上报:self_help + res.setReportTypeName(reportTypeMap.containsKey(res.getReportType()) ? reportTypeMap.get(res.getReportType()) : StrConstant.EPMETY_STR); + + //待处理:pending;已取消canceled;已派单:assigned;已接单:have_order;已完成:finished + res.setStatusName(statusMap.containsKey(res.getStatus()) ? statusMap.get(res.getStatus()) : StrConstant.EPMETY_STR); + + //服务方类型:志愿者:volunteer;社会组织:social_org;社区自组织:community_org;区域党建单位:party_unit; + res.setServiceShowName(serviceTypeMap.containsKey(res.getServiceType()) ? res.getServiceName().concat(serviceTypeMap.get(res.getServiceType())) : StrConstant.EPMETY_STR); + } + return res; + } + + + + + + + } \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcResiDemandDictDao.xml b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcResiDemandDictDao.xml index 6b49401adf..0e6293002d 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcResiDemandDictDao.xml +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcResiDemandDictDao.xml @@ -223,4 +223,17 @@ + + + \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcUserDemandRecDao.xml b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcUserDemandRecDao.xml index 72ac018284..67eab8c3f4 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcUserDemandRecDao.xml +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcUserDemandRecDao.xml @@ -116,4 +116,67 @@ order by r.WANT_SERVICE_TIME desc,r.CREATED_TIME asc + + + + \ No newline at end of file From 7efe46fa045ffd6730e0865f9f89c716ca8e22d0 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Mon, 6 Dec 2021 15:48:42 +0800 Subject: [PATCH 21/35] =?UTF-8?q?=E5=88=97=E8=A1=A8=E5=92=8C=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E9=9C=80=E8=A6=81=E8=BF=94=E5=9B=9E=E4=B8=80=E7=BA=A7?= =?UTF-8?q?=E5=88=86=E7=B1=BB=E7=BC=96=E7=A0=81=E5=92=8C=E4=B8=80=E7=BA=A7?= =?UTF-8?q?=E5=88=86=E7=B1=BB=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/result/demand/DemandRecResultDTO.java | 3 ++- .../service/impl/IcUserDemandRecServiceImpl.java | 3 ++- .../main/resources/mapper/IcUserDemandRecDao.xml | 14 ++++++++++++-- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/DemandRecResultDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/DemandRecResultDTO.java index d1eac19bff..feb5c70b84 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/DemandRecResultDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/DemandRecResultDTO.java @@ -22,7 +22,8 @@ public class DemandRecResultDTO implements Serializable { private String categoryCode; private String parentCode; private String categoryName; - + private String firstCategoryCode; + private String firstCategoryName; //社区帮办:community;楼长帮办:building_caption;党员帮办:party;自身上报:self_help diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcUserDemandRecServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcUserDemandRecServiceImpl.java index 3ba0fcb8b4..962653db3e 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcUserDemandRecServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcUserDemandRecServiceImpl.java @@ -263,7 +263,7 @@ public class IcUserDemandRecServiceImpl extends BaseServiceImpl userIdList = Arrays.asList(res.getServerId()); diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcUserDemandRecDao.xml b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcUserDemandRecDao.xml index 67eab8c3f4..85beb700c0 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcUserDemandRecDao.xml +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcUserDemandRecDao.xml @@ -70,7 +70,12 @@ s.SERVICE_END_TIME as serviceEndTime, IFNULL(s.FINISH_DESC,'') as finishDesc, '' AS serviceShowName, - s.id as serviceId + s.id as serviceId, + ( + case when r.PARENT_CODE !='0' then r.PARENT_CODE + ELSE R.CATEGORY_CODE + END + ) as firstCategoryCode FROM ic_user_demand_rec r left JOIN ic_user_demand_service s ON ( r.id = s.DEMAND_REC_ID AND s.DEL_FLAG = '0' ) @@ -169,7 +174,12 @@ s.SERVICE_END_TIME as serviceEndTime, IFNULL(s.FINISH_DESC,'') as finishDesc, '' AS serviceShowName, - s.id as serviceId + s.id as serviceId, + ( + case when r.PARENT_CODE !='0' then r.PARENT_CODE + ELSE R.CATEGORY_CODE + END + ) as firstCategoryCode FROM ic_user_demand_rec r left JOIN ic_user_demand_service s ON ( r.id = s.DEMAND_REC_ID AND s.DEL_FLAG = '0' ) From aac87f7d0d0864cd464b2c38fe7365cd2396308c Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Mon, 6 Dec 2021 17:07:45 +0800 Subject: [PATCH 22/35] =?UTF-8?q?=E5=88=97=E8=A1=A8=E5=92=8C=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E9=9C=80=E8=A6=81=E8=BF=94=E5=9B=9E=E4=B8=80=E7=BA=A7?= =?UTF-8?q?=E5=88=86=E7=B1=BB=E7=BC=96=E7=A0=81=E5=92=8C=E4=B8=80=E7=BA=A7?= =?UTF-8?q?=E5=88=86=E7=B1=BB=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/dto/form/demand/IcResiUserDemandFromDTO.java | 5 +++++ .../com/epmet/service/impl/IcUserDemandRecServiceImpl.java | 4 ++-- .../src/main/resources/mapper/IcUserDemandRecDao.xml | 3 +++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/IcResiUserDemandFromDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/IcResiUserDemandFromDTO.java index 0a3382d3d3..0b46c1ca4b 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/IcResiUserDemandFromDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/IcResiUserDemandFromDTO.java @@ -23,6 +23,11 @@ public class IcResiUserDemandFromDTO implements Serializable { private Integer pageSize; + /** + * 研判分析界面,查看同类型的需求可以用此接口,只需传入分类编码 + */ + private String firstCategoryCode; + @NotBlank(message = "tokenDto获取客户id不能为空", groups = AddUserInternalGroup.class) private String customerId; } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcUserDemandRecServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcUserDemandRecServiceImpl.java index 962653db3e..e3b6d48d4d 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcUserDemandRecServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcUserDemandRecServiceImpl.java @@ -303,7 +303,7 @@ public class IcUserDemandRecServiceImpl extends BaseServiceImpl + and r.CATEGORY_CODE like concat(#{firstCategoryCode},'%') + ORDER BY r.WANT_SERVICE_TIME DESC From 6967f3f275ec710914257a81e109de50a43eb1eb Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Mon, 6 Dec 2021 17:41:50 +0800 Subject: [PATCH 23/35] =?UTF-8?q?/api/resi/mine/resiregister/submit?= =?UTF-8?q?=EF=BC=8C=E6=B3=A8=E5=86=8C=E5=B1=85=E6=B0=91=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?idNum.=E6=97=A0=E6=B3=95=E9=99=90=E5=88=B6=E5=BF=85=E5=A1=AB?= =?UTF-8?q?=EF=BC=8C=E5=9B=A0=E4=B8=BA=E4=B8=8D=E6=98=AF=E6=89=80=E6=9C=89?= =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F=E9=83=BD=E5=8F=91=E7=89=88=E3=80=82?= =?UTF-8?q?=E4=B8=94=E5=90=8C=E6=AD=A5=E5=88=B0user=5Fbase=5Finfo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/epmet/dto/UserResiInfoDTO.java | 5 +++++ .../java/com/epmet/dto/form/InfoSubmitFromDTO.java | 6 +++++- .../src/main/java/com/epmet/dao/UserResiInfoDao.java | 7 +++++++ .../java/com/epmet/entity/UserResiInfoEntity.java | 8 +++++--- .../epmet/service/impl/UserResiInfoServiceImpl.java | 7 +++++++ .../db/migration/V0.0.19__user_resi_infoaddidnum.sql | 1 + .../src/main/resources/mapper/UserResiInfoDao.xml | 11 +++++++++++ 7 files changed, 41 insertions(+), 4 deletions(-) create mode 100644 epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.19__user_resi_infoaddidnum.sql diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/UserResiInfoDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/UserResiInfoDTO.java index 3d81025a02..d8b5c10495 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/UserResiInfoDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/UserResiInfoDTO.java @@ -66,6 +66,11 @@ public class UserResiInfoDTO implements Serializable { */ private String name; + /** + * 身份证号,1206新增 + */ + private String idNum; + /** * 街道 */ diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/InfoSubmitFromDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/InfoSubmitFromDTO.java index 75453a1d22..d64368a7b4 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/InfoSubmitFromDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/InfoSubmitFromDTO.java @@ -22,7 +22,6 @@ import org.hibernate.validator.constraints.Length; import javax.validation.constraints.NotBlank; import java.io.Serializable; -import java.util.Date; /** @@ -57,6 +56,11 @@ public class InfoSubmitFromDTO implements Serializable { @Length(max=20,message = "名称不能超过20个字") private String name; + //@NotBlank(message = "身份证号不能为空") + //@Length(max=18,message = "身份证号不能超过18位") + //别的小程序不统一升级,没办法限制必填。 + private String idNum; + /** * 街道 */ diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserResiInfoDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserResiInfoDao.java index 59d42dfc6e..997a615fab 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserResiInfoDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserResiInfoDao.java @@ -96,4 +96,11 @@ public interface UserResiInfoDao extends BaseDao { * @return void */ void updateByUserId(UserResiInfoEntity entity); + + /** + * 身份证 + * @param idNum + * @return + */ + Integer selectCountByIdNum(@Param("idNum") String idNum,@Param("customerId") String customerId); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/UserResiInfoEntity.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/UserResiInfoEntity.java index 7c4266e3c7..7df10f75a6 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/UserResiInfoEntity.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/UserResiInfoEntity.java @@ -20,13 +20,10 @@ package com.epmet.entity; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; - import com.epmet.commons.mybatis.entity.BaseEpmetEntity; import lombok.Data; import lombok.EqualsAndHashCode; -import java.util.Date; - /** * 用户居民端注册信息表 用户在居民端完善的个人信息 * @@ -60,6 +57,11 @@ public class UserResiInfoEntity extends BaseEpmetEntity { */ private String name; + /** + * 身份证号,1206新增 + */ + private String idNum; + /** * 街道 */ diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserResiInfoServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserResiInfoServiceImpl.java index 2c58fe7b65..9da7ccac80 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserResiInfoServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserResiInfoServiceImpl.java @@ -27,6 +27,7 @@ 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.EpmetException; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.ConvertUtils; @@ -217,6 +218,12 @@ public class UserResiInfoServiceImpl extends BaseServiceImpl NumConstant.ZERO) { + throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), "user_resi_info已存在该身份证号", "身份证号已被使用"); + } + } userResiRegisterVisitService.updateResiRegisterVisit(true, userResiInfoDTO); //4:居民注册关系表新增数据 首次注册数加一 注册数加一 参与数加一 registerRelationService.saveRegisterRelation(userResiInfoDTO); diff --git a/epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.19__user_resi_infoaddidnum.sql b/epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.19__user_resi_infoaddidnum.sql new file mode 100644 index 0000000000..535da1b138 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.19__user_resi_infoaddidnum.sql @@ -0,0 +1 @@ +alter table user_resi_info add COLUMN ID_NUM VARCHAR(32) COMMENT '身份证号,1206新增' AFTER NAME; diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/UserResiInfoDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/UserResiInfoDao.xml index fb360d3a39..0c4738a565 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/UserResiInfoDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/UserResiInfoDao.xml @@ -175,4 +175,15 @@ uri.DEL_FLAG = '0' AND uri.USER_ID = #{userId} + + From 72dad217f17ac55d5944e7a2065c086e36675fa6 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Mon, 6 Dec 2021 20:10:04 +0800 Subject: [PATCH 24/35] =?UTF-8?q?/personalcenter/editinfo=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=85=A5=E5=8F=82idNum?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/epmet/dto/form/EditInfoFormDTO.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/EditInfoFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/EditInfoFormDTO.java index 81bd8e9082..a4565ffc6d 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/EditInfoFormDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/EditInfoFormDTO.java @@ -36,6 +36,12 @@ public class EditInfoFormDTO implements Serializable { */ @NotBlank(message = "名不能为空") private String name; + + //@NotBlank(message = "身份证号不能为空") + //@Length(max=18,message = "身份证号不能超过18位") + //别的小程序不统一升级,没办法限制必填。 + private String idNum; + /** * 路牌号 */ From f30e11175152933484b74bc8a0919a01baf1c1c2 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Mon, 6 Dec 2021 20:48:12 +0800 Subject: [PATCH 25/35] =?UTF-8?q?api/resi/mine/mine/profile=E8=BF=94?= =?UTF-8?q?=E5=8F=82=E5=A2=9E=E5=8A=A0completeIdNum=EF=BC=9Atrue:=E5=B7=B2?= =?UTF-8?q?=E5=AE=8C=E5=96=84=E8=BA=AB=E4=BB=BD=E8=AF=81=E5=8F=B7=EF=BC=9B?= =?UTF-8?q?false=EF=BC=9A=E6=9C=AA=E5=AE=8C=E5=96=84=E8=BA=AB=E4=BB=BD?= =?UTF-8?q?=E8=AF=81=E5=8F=B7=E3=80=82=20=E5=8F=AA=E6=9C=89registerFlag=3D?= =?UTF-8?q?true&&completeIdNum=3Dfalse=E6=97=B6=E6=89=8D=E6=8F=90=E9=86=92?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=AE=8C=E5=96=84=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/dto/result/MyResiUserInfoResultDTO.java | 4 ++++ .../main/java/com/epmet/dto/result/MyselfMsgResultDTO.java | 4 ++++ .../src/main/java/com/epmet/service/impl/UserServiceImpl.java | 2 ++ .../epmet-user-server/src/main/resources/mapper/UserDao.xml | 3 ++- 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/MyResiUserInfoResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/MyResiUserInfoResultDTO.java index 5b26ee9150..a81e542024 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/MyResiUserInfoResultDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/MyResiUserInfoResultDTO.java @@ -22,6 +22,10 @@ public class MyResiUserInfoResultDTO implements Serializable { * 是否已注册居民,true ,false * */ private Boolean registerFlag; + /** + * 是否录入身份证号,true ,false + * */ + private Boolean completeIdNum; /** * 微信昵称,可为空“” * */ diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/MyselfMsgResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/MyselfMsgResultDTO.java index b46c665dfc..cb15d9440b 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/MyselfMsgResultDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/MyselfMsgResultDTO.java @@ -38,4 +38,8 @@ public class MyselfMsgResultDTO implements Serializable { * */ private String gridId; + /** + * 身份证号 + * */ + private String idNum; } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserServiceImpl.java index 6c56b705a8..fee82e7839 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserServiceImpl.java @@ -183,6 +183,8 @@ public class UserServiceImpl extends BaseServiceImpl implem MyResiUserInfoResultDTO result = ConvertUtils.sourceToTarget(myselfMsg,MyResiUserInfoResultDTO.class); //registerFlag 是否已注册居民,true ,false result.setRegisterFlag(StringUtils.isNotBlank(myselfMsg.getResiId())); + // 已录入身份证号:true;未完善:false. + result.setCompleteIdNum(StringUtils.isNotBlank(myselfMsg.getIdNum())); result.setRegisterGridName(ModuleConstant.EMPTY_STR); if(StringUtils.isNotBlank(myselfMsg.getGridId())){ //registerGridName 当前在哪个网格,显示哪个网格的名称 diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/UserDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/UserDao.xml index bbdaf024ba..6d82e4c200 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/UserDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/UserDao.xml @@ -34,7 +34,8 @@ IFNULL(wechat.NICKNAME,"") AS nickName, IFNULL(resi.ID,"") AS resiId, IFNULL(CONCAT(resi.SURNAME,resi.NAME),"") AS userRealName, - IFNULL(relation.GRID_ID,"") AS gridId + IFNULL(relation.GRID_ID,"") AS gridId, + IFNULL(resi.id_num,'')AS idNum FROM USER user LEFT JOIN From b62ef09e0246d0be93be5931cbe03ab69a962f18 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Mon, 6 Dec 2021 21:24:53 +0800 Subject: [PATCH 26/35] =?UTF-8?q?=E5=AE=8C=E5=96=84=E5=85=9A=E5=91=98?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E8=87=AA=E5=8A=A8=E6=B3=A8=E5=86=8C=E5=B1=85?= =?UTF-8?q?=E6=B0=91=E5=A2=9E=E5=8A=A0=E8=BA=AB=E4=BB=BD=E8=AF=81=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/PartyMemberServiceImpl.java | 1 - .../impl/PartyMemberConfirmServiceImpl.java | 4 ++- .../service/impl/UserResiInfoServiceImpl.java | 27 ++++++++++--------- 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/partymember/service/impl/PartyMemberServiceImpl.java b/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/partymember/service/impl/PartyMemberServiceImpl.java index 447055431a..1cc431a9b3 100644 --- a/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/partymember/service/impl/PartyMemberServiceImpl.java +++ b/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/partymember/service/impl/PartyMemberServiceImpl.java @@ -10,7 +10,6 @@ import com.epmet.resi.mine.dto.from.PartyMemberSubmitFromDTO; import com.epmet.resi.mine.dto.from.VerificationCodeFromDTO; import com.epmet.resi.mine.dto.result.PartyMemberInitResultDTO; import com.epmet.resi.partymember.dto.partymember.PartymemberInfoDTO; -import org.apache.poi.ss.formula.constant.ErrorConstant; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/PartyMemberConfirmServiceImpl.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/PartyMemberConfirmServiceImpl.java index 502a520dc3..ae67b95ebf 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/PartyMemberConfirmServiceImpl.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/PartyMemberConfirmServiceImpl.java @@ -580,6 +580,8 @@ public class PartyMemberConfirmServiceImpl implements PartyMemberConfirmService userResiInfoDTO.setDistrict(partyMemberInfoDTO.getEstate()); userResiInfoDTO.setBuildingAddress(partyMemberInfoDTO.getBuilding()); userResiInfoDTO.setCustomerId(partyMemberInfoDTO.getCustomerId()); + //注册居民需要录入身份证号 + userResiInfoDTO.setIdNum(partyMemberInfoDTO.getIdCard()); Result result = epmetUserFeignClient.saveResiInfo(userResiInfoDTO); log.info("isResiRegister epmetUserFeignClient.saveResiInfo result:{}",JSON.toJSONString(result)); if (!result.success()){ @@ -608,7 +610,7 @@ public class PartyMemberConfirmServiceImpl implements PartyMemberConfirmService /** - * 保存或者更新热心居民申请行为记录表 + * 保存或者更新党员认证行为记录表 * * @param visitId 主键 * @param fromDTO 参数 diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserResiInfoServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserResiInfoServiceImpl.java index 9da7ccac80..cede578427 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserResiInfoServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserResiInfoServiceImpl.java @@ -221,7 +221,7 @@ public class UserResiInfoServiceImpl extends BaseServiceImpl NumConstant.ZERO) { - throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), "user_resi_info已存在该身份证号", "身份证号已被使用"); + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "user_resi_info已存在该身份证号", "身份证号已被使用"); } } userResiRegisterVisitService.updateResiRegisterVisit(true, userResiInfoDTO); @@ -303,24 +303,25 @@ public class UserResiInfoServiceImpl extends BaseServiceImpl 0) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "user_resi_info已存在该身份证号", "身份证号已被使用"); + } + //居民注册关系表新增数据 首次注册数加一 注册数加一 参与数加一 + registerRelationService.saveRegisterRelation(userResiInfoDTO); + //数据存入居民注册表 + saveUserResiInfo(userResiInfoDTO); /* //将用户于居民角色关联 saveUserResiInfo已包含 UserRoleDTO userRole = new UserRoleDTO(); userRole.setUserId(userResiInfoDTO.getUserId()); userRole.setRoleKey(UserConstant.ROLE_RESI); userRole.setApp(userResiInfoDTO.getApp()); userRoleService.saveUserRole(userRole);*/ - //更新该用户在该客户下的注册状态 - userCustomerDao.updateRegistered(userResiInfoDTO.getCustomerId(), userResiInfoDTO.getUserId()); - }else{ - log.warn("手机号客户内不可用,没有更新用户信息,param:{}", JSON.toJSONString(userResiInfoDTO)); - throw new RenException(EpmetErrorCode.THE_MOBILE_HAS_BEEN_USED.getCode(),EpmetErrorCode.THE_MOBILE_HAS_BEEN_USED.getMsg()); - } - + //更新该用户在该客户下的注册状态 + userCustomerDao.updateRegistered(userResiInfoDTO.getCustomerId(), userResiInfoDTO.getUserId()); return result; } From d34a34ef129205e78c43d8b135c2cc65dbc6d166 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Mon, 6 Dec 2021 21:50:05 +0800 Subject: [PATCH 27/35] =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E8=BA=AB=E4=BB=BD?= =?UTF-8?q?=E8=AF=81=E5=8F=B7=E6=89=BE=E4=BA=BA=EF=BC=9A/epmetuser/user/fi?= =?UTF-8?q?nduser?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/dto/form/ResiUserFormDTO.java | 18 +++++++++++++++ .../com/epmet/dto/result/ResiUserResDTO.java | 15 ++++++++++++ .../epmet/feign/EpmetUserOpenFeignClient.java | 9 ++++++++ .../EpmetUserOpenFeignClientFallback.java | 11 +++++++++ .../com/epmet/controller/UserController.java | 13 +++++++++++ .../java/com/epmet/dao/IcResiUserDao.java | 2 ++ .../java/com/epmet/dao/UserBaseInfoDao.java | 2 ++ .../java/com/epmet/dao/UserResiInfoDao.java | 2 ++ .../com/epmet/service/IcResiUserService.java | 9 ++++++++ .../epmet/service/UserBaseInfoService.java | 2 ++ .../java/com/epmet/service/UserService.java | 9 ++++++++ .../service/impl/IcResiUserServiceImpl.java | 14 +++++++++-- .../service/impl/UserBaseInfoServiceImpl.java | 5 ++++ .../epmet/service/impl/UserServiceImpl.java | 23 ++++++++++++++++++- .../main/resources/mapper/IcResiUserDao.xml | 11 +++++++++ .../main/resources/mapper/UserBaseInfoDao.xml | 9 ++++++++ .../main/resources/mapper/UserResiInfoDao.xml | 11 +++++++++ 17 files changed, 162 insertions(+), 3 deletions(-) create mode 100644 epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/ResiUserFormDTO.java create mode 100644 epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/ResiUserResDTO.java diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/ResiUserFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/ResiUserFormDTO.java new file mode 100644 index 0000000000..129385a187 --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/ResiUserFormDTO.java @@ -0,0 +1,18 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +@Data +public class ResiUserFormDTO implements Serializable { + public interface AddUserInternalGroup { + } + + @NotBlank(message = "身份证号不能为空", groups = AddUserInternalGroup.class) + private String idNum; + + @NotBlank(message = "客户id不能为空", groups = AddUserInternalGroup.class) + private String customerId; +} diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/ResiUserResDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/ResiUserResDTO.java new file mode 100644 index 0000000000..3d0679b9d4 --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/ResiUserResDTO.java @@ -0,0 +1,15 @@ +package com.epmet.dto.result; + +import com.epmet.dto.form.ResiUserFormDTO; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +@Data +public class ResiUserResDTO implements Serializable { + private String idNum; + private String customerId; + private String epmetUserId; + private String icResiUserId; +} 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 4e9b5f9d0e..c3841b37b2 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 @@ -660,4 +660,13 @@ public interface EpmetUserOpenFeignClient { **/ @PostMapping(value = "epmetuser/customerstaff/getbyrealnames") Result> getByRealNames(@RequestBody GetByRealNamesFormDTO formDTO); + + /** + * 根据身份证号找人 + * + * @param formDTO + * @return + */ + @PostMapping(value = "/epmetuser/user/finduser") + Result findUser(@RequestBody ResiUserFormDTO formDTO); } diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java index 0a4d2c41d4..004df9ca5b 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java @@ -479,4 +479,15 @@ public class EpmetUserOpenFeignClientFallback implements EpmetUserOpenFeignClien public Result> getByRealNames(GetByRealNamesFormDTO formDTO) { return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "getByRealNames", formDTO); } + + /** + * 根据身份证号找人 + * + * @param formDTO + * @return + */ + @Override + public Result findUser(ResiUserFormDTO formDTO) { + return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "findUser", formDTO); + } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/UserController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/UserController.java index f1cbcb114a..de10f4a695 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/UserController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/UserController.java @@ -185,4 +185,17 @@ public class UserController { } return new Result().ok(userService.queryUserClient(userId)); } + + /** + * 根据身份证号找人 + * + * + * @param formDTO + * @return + */ + @PostMapping("finduser") + public Result findUser(@RequestBody ResiUserFormDTO formDTO){ + ValidatorUtils.validateEntity(formDTO,ResiUserFormDTO.AddUserInternalGroup.class); + return new Result().ok(userService.findUser(formDTO)); + } } 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 dfc0cdae15..fe13a9d010 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 @@ -162,4 +162,6 @@ public interface IcResiUserDao extends BaseDao { List selectDemandUsers(@Param("agencyId") String agencyId, @Param("gridId")String gridId, @Param("name")String name); + + String selectIdByIdCard(@Param("customerId") String customerId, @Param("idNum")String idNum); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserBaseInfoDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserBaseInfoDao.java index 6fdd2f931f..fc1e1b35a8 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserBaseInfoDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserBaseInfoDao.java @@ -80,4 +80,6 @@ public interface UserBaseInfoDao extends BaseDao { * @date 2020.07.30 19:16 **/ String selectIdByUserId(@Param("userId") String userId); + + String selectUserId(@Param("customerId") String customerId, @Param("idNum")String idNum); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserResiInfoDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserResiInfoDao.java index 997a615fab..0d8b949596 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserResiInfoDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserResiInfoDao.java @@ -103,4 +103,6 @@ public interface UserResiInfoDao extends BaseDao { * @return */ Integer selectCountByIdNum(@Param("idNum") String idNum,@Param("customerId") String customerId); + + String selectByIdNum(@Param("customerId") String customerId, @Param("idNum")String idNum); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java index 2b88399eab..a21e7a1aa5 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java @@ -141,4 +141,13 @@ public interface IcResiUserService extends BaseService { List listFormItems(String customerId, String formCode); List queryDemandUsers(DemandUserFormDTO formDTO); + + /** + * 返回ic_resi_user.id + * + * @param customerId + * @param idNum + * @return + */ + String getByIdCard(String customerId, String idNum); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/UserBaseInfoService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/UserBaseInfoService.java index 531213863d..f0fa310d45 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/UserBaseInfoService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/UserBaseInfoService.java @@ -189,4 +189,6 @@ public interface UserBaseInfoService extends BaseService { * @date 2020.08.21 17:16 **/ ExtUserInfoResultDTO extUserInfo(CommonUserIdFormDTO param); + + String getUserIdByIdNum(String customerId, String idNum); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/UserService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/UserService.java index 33e7b1c7ad..2157dd6db0 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/UserService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/UserService.java @@ -104,4 +104,13 @@ public interface UserService extends BaseService { * @date 2021/9/10 8:50 上午 */ UserDTO queryUserClient(String userId); + + /** + * 根据身份证号找人 + * + * + * @param formDTO + * @return + */ + ResiUserResDTO findUser(ResiUserFormDTO formDTO); } 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 841f01ce34..3191bb3927 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 @@ -21,7 +21,6 @@ import com.alibaba.fastjson.JSON; 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.rocketmq.messages.IcResiUserAddMQMsg; import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.ServiceConstant; @@ -47,7 +46,6 @@ import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.constant.IcPlatformConstant; import com.epmet.constant.IcResiUserConstant; -import com.epmet.constant.SystemMessageType; import com.epmet.constant.UserConstant; import com.epmet.dao.IcResiUserDao; import com.epmet.dto.*; @@ -852,4 +850,16 @@ public class IcResiUserServiceImpl extends BaseServiceImpl queryDemandUsers(DemandUserFormDTO formDTO) { return baseDao.selectDemandUsers(formDTO.getAgencyId(),formDTO.getGridId(),formDTO.getName()); } + + /** + * 返回ic_resi_user.id + * + * @param customerId + * @param idNum + * @return + */ + @Override + public String getByIdCard(String customerId, String idNum) { + return baseDao.selectIdByIdCard(customerId,idNum); + } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBaseInfoServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBaseInfoServiceImpl.java index 0f4d76d821..c762450689 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBaseInfoServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBaseInfoServiceImpl.java @@ -442,4 +442,9 @@ public class UserBaseInfoServiceImpl extends BaseServiceImpl implem private EpmetPointOpenFeignClient epmetPointOpenFeignClient; @Autowired private UserResiInfoDao userResiInfoDao; - + @Autowired + private IcResiUserService icResiUserService; private static final Logger log = LoggerFactory.getLogger(UserServiceImpl.class); @@ -344,4 +346,23 @@ public class UserServiceImpl extends BaseServiceImpl implem return baseDao.selectByUserId(userId); } + /** + * 根据身份证号找人 + * + * @param formDTO + * @return + */ + @Override + public ResiUserResDTO findUser(ResiUserFormDTO formDTO) { + ResiUserResDTO resiUserResDTO = ConvertUtils.sourceToTarget(formDTO, ResiUserResDTO.class); + String icResiUserId = icResiUserService.getByIdCard(formDTO.getCustomerId(), formDTO.getIdNum()); + resiUserResDTO.setIcResiUserId(icResiUserId); + String userId = userBaseInfoService.getUserIdByIdNum(formDTO.getCustomerId(), formDTO.getIdNum()); + if (StringUtils.isBlank(userId)) { + resiUserResDTO.setEpmetUserId(userResiInfoDao.selectByIdNum(formDTO.getCustomerId(), formDTO.getIdNum())); + } + resiUserResDTO.setEpmetUserId(userId); + return resiUserResDTO; + } + } 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 2278cf515a..df41841400 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 @@ -308,4 +308,15 @@ ORDER BY CONVERT ( ir.NAME USING gbk ) ASC + + diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/UserBaseInfoDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/UserBaseInfoDao.xml index 8c664e678e..7ff2110cc1 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/UserBaseInfoDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/UserBaseInfoDao.xml @@ -120,4 +120,13 @@ WHERE DEL_FLAG = '0' AND USER_ID = #{userId} + + diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/UserResiInfoDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/UserResiInfoDao.xml index 0c4738a565..3c821c48c8 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/UserResiInfoDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/UserResiInfoDao.xml @@ -186,4 +186,15 @@ AND uri.id_num = #{idNum} and uri.customer_id=#{customerId} + + From 95a564b77b10ce55cf6846ab146237a4b9e2eccd Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Mon, 6 Dec 2021 22:19:58 +0800 Subject: [PATCH 28/35] =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E8=BA=AB=E4=BB=BD?= =?UTF-8?q?=E8=AF=81=E5=8F=B7=E6=89=BE=E4=BA=BA=EF=BC=9A/epmetuser/user/fi?= =?UTF-8?q?nduser?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/dto/form/ResiUserFormDTO.java | 9 ++++ .../epmet/feign/EpmetUserOpenFeignClient.java | 2 +- .../com/epmet/controller/UserController.java | 2 +- .../java/com/epmet/dao/IcResiUserDao.java | 4 +- .../java/com/epmet/dao/UserBaseInfoDao.java | 5 ++- .../java/com/epmet/dao/UserResiInfoDao.java | 4 +- .../com/epmet/service/IcResiUserService.java | 3 +- .../epmet/service/UserBaseInfoService.java | 2 +- .../service/impl/IcResiUserServiceImpl.java | 7 ++- .../service/impl/UserBaseInfoServiceImpl.java | 7 ++- .../epmet/service/impl/UserServiceImpl.java | 44 ++++++++++++++----- .../main/resources/mapper/IcResiUserDao.xml | 11 +++-- .../main/resources/mapper/UserBaseInfoDao.xml | 11 +++-- .../main/resources/mapper/UserResiInfoDao.xml | 11 +++-- 14 files changed, 90 insertions(+), 32 deletions(-) diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/ResiUserFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/ResiUserFormDTO.java index 129385a187..9e9d6da69a 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/ResiUserFormDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/ResiUserFormDTO.java @@ -5,6 +5,9 @@ import lombok.Data; import javax.validation.constraints.NotBlank; import java.io.Serializable; +/** + * 根据身份证号找人,也可根据epmetUserId查询,或者icResiUserId + */ @Data public class ResiUserFormDTO implements Serializable { public interface AddUserInternalGroup { @@ -15,4 +18,10 @@ public class ResiUserFormDTO implements Serializable { @NotBlank(message = "客户id不能为空", groups = AddUserInternalGroup.class) private String customerId; + + private String epmetUserId; + private String icResiUserId; + + //@NotBlank(message = "findType不能为空;根据身份证号:byIdNum;根据ic居民:byIc;根据小程序里的居民:byEpmetUser", groups = AddUserInternalGroup.class) + //private String findType; } 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 c3841b37b2..3d04463256 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 @@ -662,7 +662,7 @@ public interface EpmetUserOpenFeignClient { Result> getByRealNames(@RequestBody GetByRealNamesFormDTO formDTO); /** - * 根据身份证号找人 + * 根据身份证号找人,也可根据epmetUserId查询,或者icResiUserId * * @param formDTO * @return diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/UserController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/UserController.java index de10f4a695..5d0f66d698 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/UserController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/UserController.java @@ -187,7 +187,7 @@ public class UserController { } /** - * 根据身份证号找人 + * 根据身份证号找人,也可根据epmetUserId查询,或者icResiUserId * * * @param formDTO 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 fe13a9d010..ea5ca5b741 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 @@ -163,5 +163,7 @@ public interface IcResiUserDao extends BaseDao { @Param("gridId")String gridId, @Param("name")String name); - String selectIdByIdCard(@Param("customerId") String customerId, @Param("idNum")String idNum); + IcResiUserDTO selectIdByIdCard(@Param("customerId") String customerId, + @Param("idNum")String idNum, + @Param("icResiUserId")String icResiUserId); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserBaseInfoDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserBaseInfoDao.java index fc1e1b35a8..c44ea90420 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserBaseInfoDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserBaseInfoDao.java @@ -18,6 +18,7 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.UserBaseInfoDTO; import com.epmet.dto.result.ResiUserBaseInfoResultDTO; import com.epmet.dto.result.UserBaseInfoResultDTO; import com.epmet.dto.result.UserWechatResultDTO; @@ -81,5 +82,7 @@ public interface UserBaseInfoDao extends BaseDao { **/ String selectIdByUserId(@Param("userId") String userId); - String selectUserId(@Param("customerId") String customerId, @Param("idNum")String idNum); + UserBaseInfoDTO selectUserId(@Param("customerId") String customerId, + @Param("idNum")String idNum, + @Param("userId")String userId); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserResiInfoDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserResiInfoDao.java index 0d8b949596..31f4625abf 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserResiInfoDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserResiInfoDao.java @@ -104,5 +104,7 @@ public interface UserResiInfoDao extends BaseDao { */ Integer selectCountByIdNum(@Param("idNum") String idNum,@Param("customerId") String customerId); - String selectByIdNum(@Param("customerId") String customerId, @Param("idNum")String idNum); + UserResiInfoDTO selectByIdNum(@Param("customerId") String customerId, + @Param("idNum")String idNum, + @Param("userId")String userId); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java index a21e7a1aa5..9a0fcbed95 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java @@ -20,6 +20,7 @@ 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.dto.IcResiUserDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.*; import com.epmet.entity.IcResiUserEntity; @@ -149,5 +150,5 @@ public interface IcResiUserService extends BaseService { * @param idNum * @return */ - String getByIdCard(String customerId, String idNum); + IcResiUserDTO getByIdCard(String customerId, String idNum,String icResiUserId); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/UserBaseInfoService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/UserBaseInfoService.java index f0fa310d45..164a222894 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/UserBaseInfoService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/UserBaseInfoService.java @@ -190,5 +190,5 @@ public interface UserBaseInfoService extends BaseService { **/ ExtUserInfoResultDTO extUserInfo(CommonUserIdFormDTO param); - String getUserIdByIdNum(String customerId, String idNum); + UserBaseInfoDTO getUserIdByIdNum(String customerId, String idNum,String userId); } 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 3191bb3927..9510a50fe2 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 @@ -859,7 +859,10 @@ public class IcResiUserServiceImpl extends BaseServiceImpl implem } /** - * 根据身份证号找人 + * 根据身份证号找人,也可根据epmetUserId查询,或者icResiUserId * * @param formDTO * @return */ @Override public ResiUserResDTO findUser(ResiUserFormDTO formDTO) { + if (StringUtils.isBlank(formDTO.getIdNum()) && StringUtils.isBlank(formDTO.getEpmetUserId()) && StringUtils.isBlank(formDTO.getIcResiUserId())) { + throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(),"身份证号、epmetuserId、icResiUserId至少输入一个","至少选择一种查询方式"); + } ResiUserResDTO resiUserResDTO = ConvertUtils.sourceToTarget(formDTO, ResiUserResDTO.class); - String icResiUserId = icResiUserService.getByIdCard(formDTO.getCustomerId(), formDTO.getIdNum()); - resiUserResDTO.setIcResiUserId(icResiUserId); - String userId = userBaseInfoService.getUserIdByIdNum(formDTO.getCustomerId(), formDTO.getIdNum()); - if (StringUtils.isBlank(userId)) { - resiUserResDTO.setEpmetUserId(userResiInfoDao.selectByIdNum(formDTO.getCustomerId(), formDTO.getIdNum())); + //可以根据身份证号查询,也可以根据ic_resi_user.id查询 + if (StringUtils.isBlank(formDTO.getIcResiUserId())) { + IcResiUserDTO icResiUser = icResiUserService.getByIdCard(formDTO.getCustomerId(), formDTO.getIdNum(), formDTO.getIcResiUserId()); + resiUserResDTO.setIcResiUserId(null != icResiUser ? icResiUser.getId() : StrConstant.EPMETY_STR); + resiUserResDTO.setIdNum(null != icResiUser ? icResiUser.getIdCard() : StrConstant.EPMETY_STR); + } + //可以根据身份证号查询,也可以根据epmet_user.user.id查询 + if (StringUtils.isBlank(formDTO.getEpmetUserId())) { + UserBaseInfoDTO userBaseInfoDTO = userBaseInfoService.getUserIdByIdNum(formDTO.getCustomerId(), + formDTO.getIdNum(), + formDTO.getEpmetUserId()); + if (null == userBaseInfoDTO || StringUtils.isBlank(userBaseInfoDTO.getUserId())) { + log.info("user_base_info没有找到,去查下user_resi_info表吧"); + UserResiInfoDTO userResiInfoDTO = userResiInfoDao.selectByIdNum(formDTO.getCustomerId(), + formDTO.getIdNum(), + formDTO.getEpmetUserId()); + resiUserResDTO.setEpmetUserId(null != userResiInfoDTO ? userResiInfoDTO.getId() : StrConstant.EPMETY_STR); + } else { + resiUserResDTO.setEpmetUserId(userBaseInfoDTO.getUserId()); + } } - resiUserResDTO.setEpmetUserId(userId); return resiUserResDTO; } 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 df41841400..e7c9de9224 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 @@ -309,14 +309,19 @@ CONVERT ( ir.NAME USING gbk ) ASC - select - ir.id + ir.* FROM ic_resi_user ir WHERE ir.DEL_FLAG = '0' and ir.customer_id=#{customerId} - and ir.ID_CARD=#{idNum} + + and ir.ID_CARD=#{idNum} + + + and ir.id=#{icResiUserId} + diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/UserBaseInfoDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/UserBaseInfoDao.xml index 7ff2110cc1..521bba1169 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/UserBaseInfoDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/UserBaseInfoDao.xml @@ -121,12 +121,17 @@ AND USER_ID = #{userId} - SELECT - distinct user_id + * FROM user_base_info WHERE DEL_FLAG = '0' AND customer_id = #{=customerId} - and id_num=#{idNum} + + and id_num=#{idNum} + + + and user_id=#{userId} + diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/UserResiInfoDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/UserResiInfoDao.xml index 3c821c48c8..c0bc153d95 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/UserResiInfoDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/UserResiInfoDao.xml @@ -187,14 +187,19 @@ and uri.customer_id=#{customerId} - SELECT - distinct uri.user_id + uri.* FROM user_resi_info uri WHERE uri.DEL_FLAG = '0' - AND uri.id_num = #{idNum} and uri.customer_id=#{customerId} + + AND uri.id_num = #{idNum} + + + and uri.user_id=#{userId} + From 7130b6cfbde333c426692b067710ccd449d9e24d Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Mon, 6 Dec 2021 22:31:21 +0800 Subject: [PATCH 29/35] =?UTF-8?q?"mydemand"=E6=8E=A5=E5=8F=A3=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E7=9A=84=E6=98=AFPC=E5=BD=95=E5=85=A5=E7=9A=84?= =?UTF-8?q?=E9=9C=80=E6=B1=82+=E5=B1=85=E6=B0=91=E7=AB=AF=E5=B0=8F?= =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E7=94=A8=E6=88=B7=E8=87=AA=E5=B7=B1=E4=B8=8A?= =?UTF-8?q?=E6=8A=A5=E7=9A=84=E9=9C=80=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/form/demand/IcResiUserDemandFromDTO.java | 5 +++++ .../service/impl/IcUserDemandRecServiceImpl.java | 12 ++++++++++++ .../src/main/resources/mapper/IcUserDemandRecDao.xml | 10 +++++++++- 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/IcResiUserDemandFromDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/IcResiUserDemandFromDTO.java index 0b46c1ca4b..ad416293e9 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/IcResiUserDemandFromDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/IcResiUserDemandFromDTO.java @@ -30,4 +30,9 @@ public class IcResiUserDemandFromDTO implements Serializable { @NotBlank(message = "tokenDto获取客户id不能为空", groups = AddUserInternalGroup.class) private String customerId; + + /** + * 代码内自己查询的参数,赋值到此属性 + */ + private String epmetUserId; } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcUserDemandRecServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcUserDemandRecServiceImpl.java index e3b6d48d4d..29f1c20143 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcUserDemandRecServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcUserDemandRecServiceImpl.java @@ -40,8 +40,10 @@ import com.epmet.dao.IcUserDemandServiceDao; import com.epmet.dto.CustomerGridDTO; import com.epmet.dto.IcUserDemandRecDTO; import com.epmet.dto.form.CustomerGridFormDTO; +import com.epmet.dto.form.ResiUserFormDTO; import com.epmet.dto.form.demand.*; import com.epmet.dto.result.AllGridsByUserIdResultDTO; +import com.epmet.dto.result.ResiUserResDTO; import com.epmet.dto.result.UserBaseInfoResultDTO; import com.epmet.dto.result.demand.DemandRecResultDTO; import com.epmet.dto.result.demand.IcResiUserReportDemandRes; @@ -465,6 +467,16 @@ public class IcUserDemandRecServiceImpl extends BaseServiceImpl queryMyDemand(IcResiUserDemandFromDTO formDTO) { + //1、查询当前居民在小程序里是否有用户id + ResiUserFormDTO resiUserFormDTO=new ResiUserFormDTO(); + resiUserFormDTO.setCustomerId(formDTO.getCustomerId()); + resiUserFormDTO.setIcResiUserId(formDTO.getUserId()); + Result userRes=epmetUserOpenFeignClient.findUser(resiUserFormDTO); + if(!userRes.success()){ + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"/epmetuser/user/finduser接口异常","查找居民端小程序用户信息异常"); + } + formDTO.setEpmetUserId(userRes.getData().getEpmetUserId()); + //2、小程序内自己上报+赋能平台待录入的 PageInfo pageInfo = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()).doSelectPageInfo(() -> baseDao.selectUserDemand(formDTO)); List list = pageInfo.getList(); diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcUserDemandRecDao.xml b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcUserDemandRecDao.xml index 4681fbdbe3..c2f1298b2c 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcUserDemandRecDao.xml +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcUserDemandRecDao.xml @@ -134,7 +134,15 @@ ic_user_demand_rec r WHERE r.DEL_FLAG = '0' - AND r.DEMAND_USER_ID = #{userId} + + + AND (r.DEMAND_USER_ID = #{userId} or r.DEMAND_USER_ID=#{epmetUserId}) + + + AND r.DEMAND_USER_ID = #{userId} + + + and r.CATEGORY_CODE like concat(#{firstCategoryCode},'%') From e542453c1046bf2e9337527de31a766b191e603d Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Mon, 6 Dec 2021 22:31:49 +0800 Subject: [PATCH 30/35] =?UTF-8?q?"mydemand"=E6=8E=A5=E5=8F=A3=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E7=9A=84=E6=98=AFPC=E5=BD=95=E5=85=A5=E7=9A=84?= =?UTF-8?q?=E9=9C=80=E6=B1=82+=E5=B1=85=E6=B0=91=E7=AB=AF=E5=B0=8F?= =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E7=94=A8=E6=88=B7=E8=87=AA=E5=B7=B1=E4=B8=8A?= =?UTF-8?q?=E6=8A=A5=E7=9A=84=E9=9C=80=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/mapper/IcUserDemandRecDao.xml | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcUserDemandRecDao.xml b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcUserDemandRecDao.xml index c2f1298b2c..8aed916dee 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcUserDemandRecDao.xml +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcUserDemandRecDao.xml @@ -134,15 +134,14 @@ ic_user_demand_rec r WHERE r.DEL_FLAG = '0' - - - AND (r.DEMAND_USER_ID = #{userId} or r.DEMAND_USER_ID=#{epmetUserId}) - - - AND r.DEMAND_USER_ID = #{userId} - - - + + + AND (r.DEMAND_USER_ID = #{userId} or r.DEMAND_USER_ID=#{epmetUserId}) + + + AND r.DEMAND_USER_ID = #{userId} + + and r.CATEGORY_CODE like concat(#{firstCategoryCode},'%') From 745d249f47a8dc001ab8a44f947c84d346c8c7ec Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Tue, 7 Dec 2021 08:04:29 +0800 Subject: [PATCH 31/35] =?UTF-8?q?"finduser"3=E8=80=85=E4=B8=8D=E8=83=BD?= =?UTF-8?q?=E5=90=8C=E6=97=B6=E4=B8=BA=E7=A9=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/dto/form/ResiUserFormDTO.java | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/ResiUserFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/ResiUserFormDTO.java index 9e9d6da69a..c6341dd565 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/ResiUserFormDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/ResiUserFormDTO.java @@ -13,15 +13,24 @@ public class ResiUserFormDTO implements Serializable { public interface AddUserInternalGroup { } - @NotBlank(message = "身份证号不能为空", groups = AddUserInternalGroup.class) + /** + * 身份证号 + */ private String idNum; - @NotBlank(message = "客户id不能为空", groups = AddUserInternalGroup.class) - private String customerId; - + /** + * epemt_user.user.id + */ private String epmetUserId; + + /** + * ic_resi_user.id + */ private String icResiUserId; + @NotBlank(message = "客户id不能为空", groups = AddUserInternalGroup.class) + private String customerId; + //@NotBlank(message = "findType不能为空;根据身份证号:byIdNum;根据ic居民:byIc;根据小程序里的居民:byEpmetUser", groups = AddUserInternalGroup.class) //private String findType; } From 42c88be18404788dd74f4033dfeef07aaa2023a9 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Tue, 7 Dec 2021 08:14:02 +0800 Subject: [PATCH 32/35] =?UTF-8?q?=E4=BF=AE=E6=94=B9"persondata"=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E8=BF=94=E5=8F=82=E6=96=B0=E5=A2=9EepmetUserId?= =?UTF-8?q?=EF=BC=8CicResiUserId?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/dto/form/PersonDataFormDTO.java | 4 ++++ .../com/epmet/dto/result/PersonDataResultDTO.java | 11 ++++++++++- .../com/epmet/controller/IcResiUserController.java | 4 +++- .../com/epmet/service/impl/IcResiUserServiceImpl.java | 11 +++++++++++ 4 files changed, 28 insertions(+), 2 deletions(-) diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/PersonDataFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/PersonDataFormDTO.java index 52d96870a2..e2355d145a 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/PersonDataFormDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/PersonDataFormDTO.java @@ -19,4 +19,8 @@ public class PersonDataFormDTO implements Serializable { @NotBlank(message = "userId不能为空",groups = PersonDataForm.class) private String userId; + + + @NotBlank(message = "tokenDto获取customerId不能为空",groups = PersonDataForm.class) + private String customerId; } diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PersonDataResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PersonDataResultDTO.java index 6a89bb2037..3d1334d249 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PersonDataResultDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PersonDataResultDTO.java @@ -7,7 +7,6 @@ import lombok.Data; import java.io.Serializable; import java.util.ArrayList; import java.util.List; -import java.util.Map; /** * @Author zxc @@ -19,6 +18,16 @@ public class PersonDataResultDTO implements Serializable { private static final long serialVersionUID = 5210308218052783909L; + /** + * epemt_user.user.id + */ + private String epmetUserId; + + /** + * ic_resi_user.id + */ + private String icResiUserId; + /** * 工作单位 */ 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 f5720acd39..d6df9f57e0 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 @@ -426,7 +426,9 @@ public class IcResiUserController { * @date 2021/11/3 9:21 上午 */ @PostMapping("persondata") - public Result personData(@RequestBody PersonDataFormDTO formDTO) { + public Result personData(@LoginUser TokenDto tokenDto,@RequestBody PersonDataFormDTO formDTO) { + formDTO.setCustomerId(tokenDto.getCustomerId()); + ValidatorUtils.validateEntity(formDTO,PersonDataFormDTO.PersonDataForm.class); return new Result().ok(icResiUserService.personData(formDTO)); } 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 9510a50fe2..a78ec9c296 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 @@ -59,6 +59,7 @@ import com.epmet.feign.EpmetMessageOpenFeignClient; import com.epmet.feign.GovOrgOpenFeignClient; import com.epmet.feign.OperCustomizeOpenFeignClient; import com.epmet.service.IcResiUserService; +import com.epmet.service.UserService; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; @@ -99,6 +100,8 @@ public class IcResiUserServiceImpl extends BaseServiceImpl getWrapper(Map params){ String id = (String)params.get(FieldConstant.ID_HUMP); @@ -528,6 +531,14 @@ public class IcResiUserServiceImpl extends BaseServiceImpl> listResult = govOrgOpenFeignClient.selectHouseInfoByIdCard(personData.getIdCard()); if (!listResult.success()){ From f74c0ace18e83cc2a62acd792412d871a94abad4 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Tue, 7 Dec 2021 08:18:36 +0800 Subject: [PATCH 33/35] =?UTF-8?q?=E4=BF=AE=E6=94=B9""mydemand""=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=85=A5=E5=8F=82=E6=96=B0=E5=A2=9EepmetUserId?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/form/demand/IcResiUserDemandFromDTO.java | 11 ++++++----- .../service/impl/IcUserDemandRecServiceImpl.java | 8 ++++---- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/IcResiUserDemandFromDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/IcResiUserDemandFromDTO.java index ad416293e9..51d334d874 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/IcResiUserDemandFromDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/IcResiUserDemandFromDTO.java @@ -17,12 +17,17 @@ public class IcResiUserDemandFromDTO implements Serializable { */ @NotBlank(message = "userId不能为空", groups = AddUserInternalGroup.class) private String userId; + + /** + * icresiuser/persondata接口返参中有此值 + */ + private String epmetUserId; + @NotNull(message = "pageNo不能为空", groups = AddUserInternalGroup.class) private Integer pageNo; @NotNull(message = "pageSize不能为空", groups = AddUserInternalGroup.class) private Integer pageSize; - /** * 研判分析界面,查看同类型的需求可以用此接口,只需传入分类编码 */ @@ -31,8 +36,4 @@ public class IcResiUserDemandFromDTO implements Serializable { @NotBlank(message = "tokenDto获取客户id不能为空", groups = AddUserInternalGroup.class) private String customerId; - /** - * 代码内自己查询的参数,赋值到此属性 - */ - private String epmetUserId; } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcUserDemandRecServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcUserDemandRecServiceImpl.java index 29f1c20143..0693b7ec7b 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcUserDemandRecServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcUserDemandRecServiceImpl.java @@ -40,10 +40,8 @@ import com.epmet.dao.IcUserDemandServiceDao; import com.epmet.dto.CustomerGridDTO; import com.epmet.dto.IcUserDemandRecDTO; import com.epmet.dto.form.CustomerGridFormDTO; -import com.epmet.dto.form.ResiUserFormDTO; import com.epmet.dto.form.demand.*; import com.epmet.dto.result.AllGridsByUserIdResultDTO; -import com.epmet.dto.result.ResiUserResDTO; import com.epmet.dto.result.UserBaseInfoResultDTO; import com.epmet.dto.result.demand.DemandRecResultDTO; import com.epmet.dto.result.demand.IcResiUserReportDemandRes; @@ -467,7 +465,7 @@ public class IcUserDemandRecServiceImpl extends BaseServiceImpl queryMyDemand(IcResiUserDemandFromDTO formDTO) { - //1、查询当前居民在小程序里是否有用户id + /*//1、查询当前居民在小程序里是否有用户id ResiUserFormDTO resiUserFormDTO=new ResiUserFormDTO(); resiUserFormDTO.setCustomerId(formDTO.getCustomerId()); resiUserFormDTO.setIcResiUserId(formDTO.getUserId()); @@ -475,7 +473,9 @@ public class IcUserDemandRecServiceImpl extends BaseServiceImpl pageInfo = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()).doSelectPageInfo(() -> baseDao.selectUserDemand(formDTO)); From 56b39d08395880fa2fea48c278f3ac36a8db18bd Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Tue, 7 Dec 2021 09:34:36 +0800 Subject: [PATCH 34/35] =?UTF-8?q?=E6=97=B6=E9=97=B4=E6=AE=B5=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E5=88=A9=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ProjectServiceImpl.java | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java index 36475ba740..3c70e51a3a 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java @@ -71,6 +71,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; +import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; import java.util.function.Function; @@ -2789,4 +2790,53 @@ public class ProjectServiceImpl extends BaseServiceImpl getIntervalTimeList(String start,String end,Integer interval) { + Date startDate = convertStringToDate("HH:mm", start); + Date endDate = convertStringToDate("HH:mm", end); + List list = new ArrayList<>(); + while (startDate.getTime() <= endDate.getTime()) { + list.add(convertDateToString("HH:mm", startDate)); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(startDate); + calendar.add(Calendar.MINUTE, interval); + if (calendar.getTime().getTime() > endDate.getTime()) { + if (!startDate.equals(endDate)) { + list.add(convertDateToString("HH:mm", endDate)); + } + startDate = calendar.getTime(); + } else { + startDate = calendar.getTime(); + } + + } + list.remove(list.size() - NumConstant.ONE); + list.add(list.size(),"24:00"); + return list; + } + + + public static Date convertStringToDate(String format, String dateStr) { + SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format); + try { + Date date = simpleDateFormat.parse(dateStr); + return date; + } catch (ParseException e) { + e.printStackTrace(); + } + return null; + } + + public static String convertDateToString(String format, Date date) { + SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format); + return simpleDateFormat.format(date); + } } \ No newline at end of file From f2a05962feff997a894e76c69ce09fbc5b4ee88f Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Tue, 7 Dec 2021 09:44:12 +0800 Subject: [PATCH 35/35] =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/epmet/dto/form/CustomerGridFormDTO.java | 5 +++-- .../java/com/epmet/controller/CustomerGridController.java | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/CustomerGridFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/CustomerGridFormDTO.java index c34d3c5870..1949f6d8a8 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/CustomerGridFormDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/CustomerGridFormDTO.java @@ -31,11 +31,12 @@ import java.io.Serializable; public class CustomerGridFormDTO implements Serializable { private static final long serialVersionUID = 1L; - /** * 网格Id */ - @NotBlank(message = "网格ID不能为空") + @NotBlank(message = "网格ID不能为空", groups = {Grid.class}) private String gridId; + public interface Grid{} + } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CustomerGridController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CustomerGridController.java index 2780e25b56..0b58b4d6f0 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CustomerGridController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CustomerGridController.java @@ -103,6 +103,7 @@ public class CustomerGridController { */ @PostMapping("getcustomergridbygridid") public Result getCustomerGridByGridId(@RequestBody CustomerGridFormDTO customerGridFormDTO) { + ValidatorUtils.validateEntity(customerGridFormDTO, CustomerGridFormDTO.Grid.class); return customerGridService.getCustomerGridByGridId(customerGridFormDTO); }