diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/UpdateController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/UpdateController.java
new file mode 100644
index 0000000..1044961
--- /dev/null
+++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/UpdateController.java
@@ -0,0 +1,48 @@
+package com.lyms.platform.operate.web.controller;
+
+import com.lyms.platform.common.base.BaseController;
+import com.lyms.platform.common.constants.ErrorCodeConstants;
+import com.lyms.platform.common.utils.ExceptionUtils;
+import com.lyms.platform.common.utils.StringUtils;
+import com.lyms.platform.operate.web.facade.CorrectDataFacade;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 数据处理接口
+ *
+ * Created by Administrator on 2016/10/25 0025.
+ */
+@Controller
+public class UpdateController extends BaseController {
+
+ @Autowired
+ private CorrectDataFacade correctDataFacade;
+
+ @RequestMapping(value = "/updateData", method = RequestMethod.GET)
+ @ResponseBody
+ private Map updateCorrectData(@RequestParam("hId") String hId) {
+ Map result = new HashMap<>();
+ try {
+ if (StringUtils.isNotEmpty(hId)) {
+ correctDataFacade.correctPatient(hId);
+ result.put("msg", "成功.");
+ result.put("code", ErrorCodeConstants.SUCCESS);
+ } else {
+ result.put("msg", "参数不能为空.");
+ result.put("code", ErrorCodeConstants.PARAMETER_ERROR);
+ }
+ } catch (Exception e) {
+ ExceptionUtils.catchException(e, "updateCorrectData Error. hospitalId:" + hId);
+ }
+ return result;
+ }
+}
diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AntenatalExaminationFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AntenatalExaminationFacade.java
index 86d1820..f749317 100644
--- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AntenatalExaminationFacade.java
+++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AntenatalExaminationFacade.java
@@ -340,7 +340,7 @@ public class AntenatalExaminationFacade {
* @param parentId
* @param hospitalId
*/
- private void updateLastRhTime(String parentId, String hospitalId) {
+ public void updateLastRhTime(String parentId, String hospitalId) {
AntExQuery antExQuery = new AntExQuery();
antExQuery.setYn(YnEnums.YES.getId());
@@ -1426,7 +1426,7 @@ public class AntenatalExaminationFacade {
*
* @param parentId
*/
- private void updateLastRisk(String parentId) {
+ public void updateLastRisk(String parentId) {
Patients patients = patientsService.findOnePatientById(parentId);
PatientsQuery patientsQuery1 = new PatientsQuery();
diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/CorrectDataFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/CorrectDataFacade.java
new file mode 100644
index 0000000..cfa74b6
--- /dev/null
+++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/CorrectDataFacade.java
@@ -0,0 +1,70 @@
+package com.lyms.platform.operate.web.facade;
+
+import com.lyms.platform.biz.service.AntenatalExaminationService;
+import com.lyms.platform.biz.service.PatientsService;
+import com.lyms.platform.biz.service.PostReviewService;
+import com.lyms.platform.common.enums.YnEnums;
+import com.lyms.platform.operate.web.worker.CorrectDataWorker;
+import com.lyms.platform.operate.web.worker.WorkHR;
+import com.lyms.platform.pojo.Patients;
+import com.lyms.platform.query.PatientsQuery;
+import org.apache.commons.collections.CollectionUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.*;
+import java.util.concurrent.atomic.AtomicLong;
+
+/**
+ * 纠正数据门面
+ *
+ * Created by Administrator on 2016/10/25 0025.
+ */
+@Component
+public class CorrectDataFacade {
+
+ private Logger logger = LoggerFactory.getLogger(CorrectDataFacade.class);
+ @Autowired
+ private PatientsService patientsService;
+ @Autowired
+ private PostReviewService postReviewService;
+ @Autowired
+ private AntenatalExaminationFacade antExFacade;
+ @Autowired
+ private AntenatalExaminationService anExService;
+
+ private ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(5, 10, 1, TimeUnit.MINUTES, new LinkedBlockingQueue(5000));
+
+ /**
+ *
+ * 纠正数据
+ *
+ * @param hospitalId
+ */
+ public void correctPatient(String hospitalId) throws InterruptedException {
+ PatientsQuery patientsQuery1=new PatientsQuery();
+ patientsQuery1.setYn(YnEnums.YES.getId());
+ patientsQuery1.setHospitalId(hospitalId);
+ List patientses = patientsService.queryPatient(patientsQuery1);
+
+ if(CollectionUtils.isNotEmpty(patientses)){
+ int batchSize = 150;
+ int end = 0;
+ CountDownLatch countDownLatch=new CountDownLatch(patientses.size());
+ java.util.concurrent.atomic.AtomicLong counter=new AtomicLong();
+ for (int i = 0; i < patientses.size(); i += batchSize) {
+ end = (end + batchSize);
+ if (end > patientses.size()) {
+ end = patientses.size();
+ }
+ threadPoolExecutor.submit(new CorrectDataWorker(patientses.subList(i, end),postReviewService,patientsService,anExService,antExFacade,countDownLatch,counter));
+ }
+ countDownLatch.await();
+ logger.info("hand hospitalId :" +hospitalId+", update count "+counter.get());
+ }
+ }
+}
\ No newline at end of file
diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/CorrectDataWorker.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/CorrectDataWorker.java
new file mode 100644
index 0000000..c980479
--- /dev/null
+++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/CorrectDataWorker.java
@@ -0,0 +1,112 @@
+package com.lyms.platform.operate.web.worker;
+
+import com.lyms.platform.biz.service.AntenatalExaminationService;
+import com.lyms.platform.biz.service.PatientsService;
+import com.lyms.platform.biz.service.PostReviewService;
+import com.lyms.platform.common.enums.YnEnums;
+import com.lyms.platform.common.utils.ExceptionUtils;
+import com.lyms.platform.operate.web.facade.AntenatalExaminationFacade;
+import com.lyms.platform.pojo.AntExChuModel;
+import com.lyms.platform.pojo.AntenatalExaminationModel;
+import com.lyms.platform.pojo.Patients;
+import com.lyms.platform.query.AntExChuQuery;
+import com.lyms.platform.query.AntExQuery;
+import com.lyms.platform.query.PostReviewQuery;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.data.domain.Sort;
+
+import java.util.Date;
+import java.util.List;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.atomic.AtomicLong;
+
+/**
+ * 纠正数据线程
+ *
+ * Created by Administrator on 2016/10/25 0025.
+ */
+public class CorrectDataWorker extends Thread {
+
+ private PostReviewService postReviewService;
+
+ private PatientsService patientsService;
+
+ private AntenatalExaminationService antExService;
+
+ private AntenatalExaminationFacade antExFacade;
+
+ private List patientses;
+
+ private CountDownLatch countDownLatch;
+
+ private java.util.concurrent.atomic.AtomicLong counter;
+
+ public CorrectDataWorker(List patientses,
+ PostReviewService postReviewService,
+ PatientsService patientsService,
+ AntenatalExaminationService antExService,
+ AntenatalExaminationFacade antExFacade,
+ CountDownLatch countDownLatch,
+ java.util.concurrent.atomic.AtomicLong counter) {
+ this.patientses = patientses;
+ this.patientsService = patientsService;
+ this.postReviewService = postReviewService;
+ this.antExService=antExService;
+ this.antExFacade=antExFacade;
+ this.countDownLatch=countDownLatch;
+ this.counter=counter;
+ }
+
+ @Override
+ public void run() {
+ //最后一次高危时间
+ // Date lastRhTime;
+ //本院最后一次产检时间
+ //Date lastCTime;
+ //本院产后复查次数
+ //Integer postViewTimes;
+ try {
+ for(Patients patients:patientses){
+ Patients patients1=new Patients();
+ patients1.setId(patients.getId());
+ //产后复查次数
+ PostReviewQuery postReviewQuery=new PostReviewQuery();
+ postReviewQuery.setHospitalId(patients.getHospitalId());
+ postReviewQuery.setYn(YnEnums.YES.getId());
+ //产后复查次数
+ patients1.setPostViewTimes(postReviewService.count(postReviewQuery));
+ //最后产检时间
+ patients1.setLastCTime(findLastCTime(patients.getId()));
+ //修改最后一次定义高危时间
+ antExFacade.updateLastRhTime(patients.getId(),patients.getHospitalId());
+ //修改高危
+ antExFacade.updateLastRisk(patients.getId());
+ counter.incrementAndGet();
+ }
+ }catch (Exception e){
+ ExceptionUtils.catchException(e,"CorrectDataWorker Error.");
+ }finally {
+ countDownLatch.countDown();
+ }
+ }
+
+
+ private Date findLastCTime(String id){
+ AntExQuery antExQuery=new AntExQuery();
+ antExQuery.setParentId(id);
+ antExQuery.setYn(YnEnums.YES.getId());
+ List antEx= antExService.queryAntenatalExamination(antExQuery.convertToQuery().addOrder(Sort.Direction.DESC, "checkDate"));
+ if(CollectionUtils.isNotEmpty(antEx)){
+ return antEx.get(0).getCheckDate();
+ }else{
+ AntExChuQuery antExChuQuery=new AntExChuQuery();
+ antExChuQuery.setParentId(id);
+ antExChuQuery.setYn(YnEnums.YES.getId());
+ List antExChu= antExService.queryAntExChu(antExChuQuery);
+ if(CollectionUtils.isNotEmpty(antExChu)){
+ return antExChu.get(0).getCheckTime();
+ }
+ }
+ return null;
+ }
+}