+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package com.elink.esua.epdc.modules.epidemic.controller;
+
+import com.elink.esua.epdc.commons.tools.page.PageData;
+import com.elink.esua.epdc.commons.tools.utils.ExcelUtils;
+import com.elink.esua.epdc.commons.tools.utils.Result;
+import com.elink.esua.epdc.commons.tools.validator.AssertUtils;
+import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils;
+import com.elink.esua.epdc.commons.tools.validator.group.AddGroup;
+import com.elink.esua.epdc.commons.tools.validator.group.DefaultGroup;
+import com.elink.esua.epdc.commons.tools.validator.group.UpdateGroup;
+import com.elink.esua.epdc.dto.analysis.pc.epidemic.EpidemicUserSyncDTO;
+import com.elink.esua.epdc.modules.epidemic.excel.EpidemicUserSyncExcel;
+import com.elink.esua.epdc.modules.epidemic.service.EpidemicUserSyncService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ *
+ *
+ * @author qu qu@elink-cn.com
+ * @since v1.0.0 2022-01-11
+ */
+@RestController
+@RequestMapping("epidemicusersync")
+public class EpidemicUserSyncController {
+
+ @Autowired
+ private EpidemicUserSyncService epidemicUserSyncService;
+
+ @GetMapping("page")
+ public Result> page(@RequestParam Map params){
+ PageData page = epidemicUserSyncService.page(params);
+ return new Result>().ok(page);
+ }
+
+ @GetMapping("{id}")
+ public Result get(@PathVariable("id") String id){
+ EpidemicUserSyncDTO data = epidemicUserSyncService.get(id);
+ return new Result().ok(data);
+ }
+
+ @PostMapping
+ public Result save(@RequestBody EpidemicUserSyncDTO dto){
+ //效验数据
+ ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
+ epidemicUserSyncService.save(dto);
+ return new Result();
+ }
+
+ @PutMapping
+ public Result update(@RequestBody EpidemicUserSyncDTO dto){
+ //效验数据
+ ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
+ epidemicUserSyncService.update(dto);
+ return new Result();
+ }
+
+ @DeleteMapping
+ public Result delete(@RequestBody String[] ids){
+ //效验数据
+ AssertUtils.isArrayEmpty(ids, "id");
+ epidemicUserSyncService.delete(ids);
+ return new Result();
+ }
+
+ @GetMapping("export")
+ public void export(@RequestParam Map params, HttpServletResponse response) throws Exception {
+ List list = epidemicUserSyncService.list(params);
+ ExcelUtils.exportExcelToTarget(response, null, list, EpidemicUserSyncExcel.class);
+ }
+
+ /**
+ * @describe: 向县平台推送更新的人员数据
+ * @author wangtong
+ * @date 2022/1/11 9:56
+ * @params [params, response]
+ * @return void
+ */
+ @PostMapping("syncUser")
+ public void syncUser() {
+ epidemicUserSyncService.syncUser();
+ }
+
+}
diff --git a/epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/modules/epidemic/dao/EpidemicUserSyncDao.java b/epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/modules/epidemic/dao/EpidemicUserSyncDao.java
new file mode 100644
index 0000000..23345fd
--- /dev/null
+++ b/epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/modules/epidemic/dao/EpidemicUserSyncDao.java
@@ -0,0 +1,63 @@
+/**
+ * Copyright 2018 人人开源 https://www.renren.io
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package com.elink.esua.epdc.modules.epidemic.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.elink.esua.epdc.commons.mybatis.entity.BaseEpdcEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ *
+ *
+ * @author qu qu@elink-cn.com
+ * @since v1.0.0 2022-01-11
+ */
+@Data
+@EqualsAndHashCode(callSuper=false)
+@TableName("epidemic_user_sync")
+public class EpidemicUserSyncEntity extends BaseEpdcEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 同步时间
+ */
+ private Date syncDate;
+
+}
diff --git a/epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/modules/epidemic/excel/EpidemicUserSyncExcel.java b/epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/modules/epidemic/excel/EpidemicUserSyncExcel.java
new file mode 100644
index 0000000..0df49a7
--- /dev/null
+++ b/epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/modules/epidemic/excel/EpidemicUserSyncExcel.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright 2018 人人开源 https://www.renren.io
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package com.elink.esua.epdc.modules.epidemic.excel;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ *
+ *
+ * @author qu qu@elink-cn.com
+ * @since v1.0.0 2022-01-11
+ */
+@Data
+public class EpidemicUserSyncExcel {
+
+ @Excel(name = "主键")
+ private String id;
+
+ @Excel(name = "同步时间")
+ private Date syncDate;
+
+
+}
diff --git a/epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/modules/epidemic/service/EpidemicUserSyncService.java b/epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/modules/epidemic/service/EpidemicUserSyncService.java
new file mode 100644
index 0000000..6416029
--- /dev/null
+++ b/epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/modules/epidemic/service/EpidemicUserSyncService.java
@@ -0,0 +1,105 @@
+/**
+ * Copyright 2018 人人开源 https://www.renren.io
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package com.elink.esua.epdc.modules.epidemic.service.impl;
+
+import cn.hutool.http.HttpRequest;
+import cn.hutool.http.HttpResponse;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl;
+import com.elink.esua.epdc.commons.tools.constant.FieldConstant;
+import com.elink.esua.epdc.commons.tools.page.PageData;
+import com.elink.esua.epdc.commons.tools.utils.ConvertUtils;
+import com.elink.esua.epdc.dto.analysis.pc.epidemic.DsfUserInfoSyncDTO;
+import com.elink.esua.epdc.dto.analysis.pc.epidemic.DsfUserInfoSyncTotalDTO;
+import com.elink.esua.epdc.dto.analysis.pc.epidemic.EpidemicUserSyncDTO;
+import com.elink.esua.epdc.modules.epidemic.dao.EpidemicUserSyncDao;
+import com.elink.esua.epdc.modules.epidemic.entity.EpidemicUserSyncEntity;
+import com.elink.esua.epdc.modules.epidemic.service.EpidemicUserSyncService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+
+/**
+ *
+ *
+ * @author qu qu@elink-cn.com
+ * @since v1.0.0 2022-01-11
+ */
+@Slf4j
+@Service
+public class EpidemicUserSyncServiceImpl extends BaseServiceImpl implements EpidemicUserSyncService {
+
+ @Value("${epidemic.user.url}")
+ public String baseUrl;
+
+
+ @Override
+ public PageData page(Map params) {
+ IPage page = baseDao.selectPage(
+ getPage(params, FieldConstant.CREATED_TIME, false),
+ getWrapper(params)
+ );
+ return getPageData(page, EpidemicUserSyncDTO.class);
+ }
+
+ @Override
+ public List list(Map params) {
+ List entityList = baseDao.selectList(getWrapper(params));
+
+ return ConvertUtils.sourceToTarget(entityList, EpidemicUserSyncDTO.class);
+ }
+
+ private QueryWrapper getWrapper(Map params){
+ String id = (String)params.get(FieldConstant.ID_HUMP);
+
+ QueryWrapper wrapper = new QueryWrapper<>();
+ wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id);
+
+ return wrapper;
+ }
+
+ @Override
+ public EpidemicUserSyncDTO get(String id) {
+ EpidemicUserSyncEntity entity = baseDao.selectById(id);
+ return ConvertUtils.sourceToTarget(entity, EpidemicUserSyncDTO.class);
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void save(EpidemicUserSyncDTO dto) {
+ EpidemicUserSyncEntity entity = ConvertUtils.sourceToTarget(dto, EpidemicUserSyncEntity.class);
+ insert(entity);
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void update(EpidemicUserSyncDTO dto) {
+ EpidemicUserSyncEntity entity = ConvertUtils.sourceToTarget(dto, EpidemicUserSyncEntity.class);
+ updateById(entity);
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void delete(String[] ids) {
+ // 逻辑删除(@TableLogic 注解)
+ baseDao.deleteBatchIds(Arrays.asList(ids));
+ }
+
+ @Override
+ public void syncUser() {
+ Date newSyncDate = new Date();
+ String syncDate = baseDao.selectLastSyncDate();
+ //分批传送,1000
+ int pointsDataLimit = 1000;
+ List userList = baseDao.selectSyncUserListByDate(syncDate);
+ List newList = new ArrayList<>();
+ //成功失败标识
+ boolean sucessFlag = true;
+ for (int i = 0; i < userList.size(); i++) {//分批次处理
+ newList.add(userList.get(i));
+ if (pointsDataLimit == newList.size() || i == userList.size() - 1) {
+ boolean sendResult = sendUserList(newList);//发送
+ if (!sendResult) {
+ sucessFlag = false;
+ }
+ newList.clear();
+ }
+ }
+ if(sucessFlag){
+ EpidemicUserSyncEntity record = new EpidemicUserSyncEntity();
+ record.setSyncDate(newSyncDate);
+ baseDao.insertEpidemicUserSync(record);
+ }
+ }
+
+ public boolean sendUserList(List dataList){
+ DsfUserInfoSyncTotalDTO data = new DsfUserInfoSyncTotalDTO();
+ data.setList(dataList);
+ try {
+ String url = baseUrl + "/userinfosync/sync";
+ log.info(url);
+
+ String paramJson = JSONObject.toJSONString(data);
+ log.info("<发送更新的人员信息to县平台>data:" + paramJson);
+ HttpResponse response = HttpRequest.post(url)
+ .body(paramJson)
+ .header("Content-Type", "application/json")
+ .execute();
+ System.out.println("response.body():" + response.body());
+ log.info("<发送更新的人员信息to县平台>response.body():" + response.body());
+ JSONObject res = JSONObject.parseObject(response.body());
+ if (null != res && (res.getIntValue("code") == 200 || res.getIntValue("code") == 0)) {
+ log.error("<发送更新的人员信息to县平台>成功!");
+ return true;
+ } else {
+ log.error("<发送更新的人员信息to县平台>获取信息编码异常:" + response.body());
+ return false;
+ }
+ } catch (Exception e) {
+ log.error("<发送更新的人员信息to县平台>获取信息异常:", e);
+ return false;
+ }
+ }
+
+}
diff --git a/epdc-cloud-analysis-pc/src/main/resources/application-dev.yml b/epdc-cloud-analysis-pc/src/main/resources/application-dev.yml
index a1576fa..5a306d8 100644
--- a/epdc-cloud-analysis-pc/src/main/resources/application-dev.yml
+++ b/epdc-cloud-analysis-pc/src/main/resources/application-dev.yml
@@ -72,4 +72,7 @@ spring:
merge-sql: false
wall:
config:
- multi-statement-allow: true
\ No newline at end of file
+ multi-statement-allow: true
+epidemic:
+ user:
+ url: ${EPIMEDIC_USER_URL:https://epdc-api-test.elinkservice.cn/esrs-pingyin}
diff --git a/epdc-cloud-analysis-pc/src/main/resources/application-prod.yml b/epdc-cloud-analysis-pc/src/main/resources/application-prod.yml
index ada8c46..de8f5ab 100644
--- a/epdc-cloud-analysis-pc/src/main/resources/application-prod.yml
+++ b/epdc-cloud-analysis-pc/src/main/resources/application-prod.yml
@@ -71,4 +71,7 @@ spring:
merge-sql: false
wall:
config:
- multi-statement-allow: true
\ No newline at end of file
+ multi-statement-allow: true
+epidemic:
+ user:
+ url: ${EPIMEDIC_USER_URL:https://epmet-ext1.pingyin.gov.cn/pingyin-admin}
diff --git a/epdc-cloud-analysis-pc/src/main/resources/application-test.yml b/epdc-cloud-analysis-pc/src/main/resources/application-test.yml
index a1576fa..5a306d8 100644
--- a/epdc-cloud-analysis-pc/src/main/resources/application-test.yml
+++ b/epdc-cloud-analysis-pc/src/main/resources/application-test.yml
@@ -72,4 +72,7 @@ spring:
merge-sql: false
wall:
config:
- multi-statement-allow: true
\ No newline at end of file
+ multi-statement-allow: true
+epidemic:
+ user:
+ url: ${EPIMEDIC_USER_URL:https://epdc-api-test.elinkservice.cn/esrs-pingyin}
diff --git a/epdc-cloud-analysis-pc/src/main/resources/mapper/epimedic/EpidemicUserSyncDao.xml b/epdc-cloud-analysis-pc/src/main/resources/mapper/epimedic/EpidemicUserSyncDao.xml
new file mode 100644
index 0000000..90352b0
--- /dev/null
+++ b/epdc-cloud-analysis-pc/src/main/resources/mapper/epimedic/EpidemicUserSyncDao.xml
@@ -0,0 +1,103 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ insert into .epidemic_user_sync
+ (ID,SYNC_DATE)
+ VALUES
+ (REPLACE(MD5(UUID()), '-', ''),#{syncDate})
+
+
+
+