From 823484a40237b3e7efb88f591687c6be6fce7050 Mon Sep 17 00:00:00 2001 From: dongqin <123456> Date: Tue, 11 Jun 2019 14:55:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E5=8E=86=E5=8F=B2=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=B7=BB=E5=8A=A0=E9=94=81=E6=9C=BA=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../operate/web/facade/MatDeliverFacade.java | 11 ++++ .../web/facade/SaveByV2ThreadPoolFacade.java | 12 ++--- .../operate/web/worker/SyncV2HistoryWorkerx.java | 62 ++++++++-------------- 3 files changed, 39 insertions(+), 46 deletions(-) diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/MatDeliverFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/MatDeliverFacade.java index 2ab1487..3ac12a8 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/MatDeliverFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/MatDeliverFacade.java @@ -2951,8 +2951,19 @@ public class MatDeliverFacade { System.out.println("没有建档数据"); continue; } + String patientsId = patients.getId(); + String pid = patients.getPid(); + if (com.lyms.platform.common.utils.StringUtils.isEmpty(patientsId) || com.lyms.platform.common.utils.StringUtils.isEmpty(pid)) { + System.out.println("pid 或 parentId为null"); + continue; + } matDeliverAddRequest.setParentId(patients.getId()); matDeliverAddRequest.setPid(patients.getPid()); + MaternalDeliverModel one = mongoTemplate.findOne(Query.query(Criteria.where("parentId").is(patientsId).and("pid").is(pid)), MaternalDeliverModel.class); + if (one != null) { + System.out.println("分娩记录已存在"); + continue; + } Date childbirthday = rs.getDate("PDR_CHILDBIRTHDAY"); String pdrGestationalweeks = rs.getString("PDR_GESTATIONALWEEKS"); int pdrIrenum = rs.getInt("PDR_IRENUM"); diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/SaveByV2ThreadPoolFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/SaveByV2ThreadPoolFacade.java index 1da0a6f..a994003 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/SaveByV2ThreadPoolFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/SaveByV2ThreadPoolFacade.java @@ -25,6 +25,8 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; @Component public class SaveByV2ThreadPoolFacade { @@ -53,11 +55,6 @@ public class SaveByV2ThreadPoolFacade { String startTime = param.getStartTime(); String endTime = param.getEndTime(); - // 同步计数器 - AtomicInteger okSize=new AtomicInteger(0); - AtomicInteger existSize=new AtomicInteger(0); - AtomicInteger errorSize=new AtomicInteger(0); - Connection connection = null; List lists=null; try { @@ -81,15 +78,16 @@ public class SaveByV2ThreadPoolFacade { if (CollectionUtils.isNotEmpty(lists)) { int batchSize = 2; int end = 0; + Lock lock = new ReentrantLock(false); for (int i = 0; i < lists.size(); i += batchSize) { end = (end + batchSize); if (end > lists.size()) { end = lists.size(); } - Future f = commonThreadPool.submit(new SyncV2HistoryWorkerx(bookbuildingFacade, lists.subList(i, end), mongoTemplate, okSize, existSize, errorSize,basicConfigDao)); + Future f = commonThreadPool.submit(new SyncV2HistoryWorkerx(bookbuildingFacade, lists.subList(i, end), mongoTemplate, lock, basicConfigDao)); } } - return new BaseResponse().setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("同步结果: ok ===>" + okSize + "exist===>" + existSize + "error===>" + errorSize); + return new BaseResponse().setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("同步结果: ok ===>" + lists.size()); } private String getSqlString(String startTime, String endTime) { diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/SyncV2HistoryWorkerx.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/SyncV2HistoryWorkerx.java index 05cc7a6..a6f60dd 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/SyncV2HistoryWorkerx.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/SyncV2HistoryWorkerx.java @@ -1,10 +1,6 @@ package com.lyms.platform.operate.web.worker; -import com.lyms.platform.common.constants.ErrorCodeConstants; import com.lyms.platform.biz.dal.IBasicConfigDao; -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.dao.operator.MongoCondition; import com.lyms.platform.common.dao.operator.MongoOper; import com.lyms.platform.common.enums.YnEnums; @@ -13,16 +9,8 @@ import com.lyms.platform.common.utils.DateUtil; import com.lyms.platform.operate.web.facade.BookbuildingFacade; import com.lyms.platform.operate.web.request.SyncV2HistoryRequest; import com.lyms.platform.operate.web.request.YunBookbuildingAddRequest; -import com.lyms.platform.pojo.AntExChuModel; -import com.lyms.platform.pojo.AntenatalExaminationModel; import com.lyms.platform.pojo.BasicConfig; 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.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; @@ -30,7 +18,7 @@ import org.springframework.data.mongodb.core.query.Query; import java.util.Date; import java.util.List; import java.util.concurrent.Callable; -import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.locks.Lock; /** * 纠正数据线程 @@ -42,24 +30,18 @@ public class SyncV2HistoryWorkerx implements Callable { private BookbuildingFacade bookbuildingFacade; private List lists; private MongoTemplate mongoTemplate; - private AtomicInteger okSize; - private AtomicInteger existSize; - private AtomicInteger errorSize; private IBasicConfigDao basicConfigDao; + private Lock lock; public SyncV2HistoryWorkerx(BookbuildingFacade bookbuildingFacade, List lists, MongoTemplate mongoTemplate, - AtomicInteger okSize, - AtomicInteger existSize, - AtomicInteger errorSize, + Lock lock , IBasicConfigDao basicConfigDao) { this.bookbuildingFacade = bookbuildingFacade; this.lists = lists; this.mongoTemplate = mongoTemplate; - this.okSize = okSize; - this.existSize = existSize; - this.errorSize = errorSize; + this.lock = lock; this.basicConfigDao = basicConfigDao; } @@ -67,29 +49,31 @@ public class SyncV2HistoryWorkerx implements Callable { public BaseObjectResponse call() throws Exception { BaseObjectResponse p=null; for (YunBookbuildingAddRequest list : lists) { - Patients patients = mongoTemplate.findOne(Query.query(Criteria.where("cardNo").is(list.getPregnantCertificateNum())), Patients.class); - if (patients != null) { - existSize.incrementAndGet(); - continue; - } + try { + lock.lock(); + Patients patients = mongoTemplate.findOne(Query.query(Criteria.where("cardNo").is(list.getPregnantCertificateNum())), Patients.class); + if (patients != null) { + System.out.println("该证件号已存在"); + continue; + } - list.setHospitalId("216");//todo - list.setBookbuildingDoctor("1000000185");//todo - list.setBookbuildingDate(DateUtil.getyyyy_MM_dd(new Date())); - list.setHusbandNationId(queryParentConfig(list.getHusbandNationId())); - list.setPregnantNationId(queryParentConfig(list.getPregnantNationId())); - p = bookbuildingFacade.addPregnantBookbuilding(list, null, false); - if (ErrorCodeConstants.SUCCESS == p.getErrorcode()) { - okSize.incrementAndGet(); - } else { - errorSize.incrementAndGet(); + list.setHospitalId("216");//todo + list.setBookbuildingDoctor("1000000185");//todo + list.setBookbuildingDate(DateUtil.getyyyy_MM_dd(new Date())); + list.setHusbandNationId(queryParentConfig(list.getHusbandNationId())); + list.setPregnantNationId(queryParentConfig(list.getPregnantNationId())); + p = bookbuildingFacade.addPregnantBookbuilding(list, null, false); + }catch (Exception e){ + e.printStackTrace(); + }finally { + lock.unlock(); } + + } return p; } - - public String queryParentConfig(String name) { List basicConfigs = basicConfigDao.queryBasicConfig( MongoCondition.newInstance("parentId", "4bc86dd6-2217-4a33-95f4-dc22ee70f2e3", MongoOper.IS). -- 1.8.3.1