From d9b8ca18f6f46e8b2bd359c84faa8d26f36d7642 Mon Sep 17 00:00:00 2001 From: dongqin <123456> Date: Tue, 18 Jun 2019 19:07:49 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BA=A7=E5=90=8E=E8=AE=BF?= =?UTF-8?q?=E8=A7=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dao/master/MasterOrganizationMapper.java | 6 ++ .../permission/service/OrganizationService.java | 2 + .../service/impl/OrganizationServiceImpl.java | 5 ++ .../mainOrm/master/MasterOrganization.xml | 4 ++ .../com/lyms/platform/query/MatDeliverQuery.java | 12 ++-- .../web/controller/MatDeliverController.java | 12 ++++ .../web/controller/PregnantBuildController.java | 13 +++- .../operate/web/facade/BookbuildingFacade.java | 71 +++++++++++++++++++++- .../operate/web/facade/MatDeliverFacade.java | 40 +++++++++++- .../operate/web/facade/PatientServiceFacade.java | 9 +-- .../operate/web/worker/BatchUpdateLymsPatient.java | 52 ++++++++++++++++ 11 files changed, 215 insertions(+), 11 deletions(-) create mode 100644 platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/BatchUpdateLymsPatient.java diff --git a/platform-biz-service/src/main/java/com/lyms/platform/permission/dao/master/MasterOrganizationMapper.java b/platform-biz-service/src/main/java/com/lyms/platform/permission/dao/master/MasterOrganizationMapper.java index b5120f5..1159a9e 100644 --- a/platform-biz-service/src/main/java/com/lyms/platform/permission/dao/master/MasterOrganizationMapper.java +++ b/platform-biz-service/src/main/java/com/lyms/platform/permission/dao/master/MasterOrganizationMapper.java @@ -2,6 +2,7 @@ package com.lyms.platform.permission.dao.master; import com.lyms.platform.permission.model.Organization; import com.lyms.platform.permission.model.OrganizationQuery; +import org.apache.ibatis.annotations.Param; import java.util.List; import java.util.Map; @@ -34,4 +35,9 @@ public interface MasterOrganizationMapper { */ public String getOrganizationName(String id); + /** + * @param townOrgId + * @return + */ + List> findIdByTownOrgId(@Param("townOrgId") String townOrgId); } \ No newline at end of file diff --git a/platform-biz-service/src/main/java/com/lyms/platform/permission/service/OrganizationService.java b/platform-biz-service/src/main/java/com/lyms/platform/permission/service/OrganizationService.java index d2df741..f45f25f 100644 --- a/platform-biz-service/src/main/java/com/lyms/platform/permission/service/OrganizationService.java +++ b/platform-biz-service/src/main/java/com/lyms/platform/permission/service/OrganizationService.java @@ -43,4 +43,6 @@ public interface OrganizationService { * 根据id查询医院名称 */ public String getOrganizationName(String id); + + List> findIdByTownOrgId(String townOrgId); } \ No newline at end of file diff --git a/platform-biz-service/src/main/java/com/lyms/platform/permission/service/impl/OrganizationServiceImpl.java b/platform-biz-service/src/main/java/com/lyms/platform/permission/service/impl/OrganizationServiceImpl.java index c1d523e..1b26a8e 100644 --- a/platform-biz-service/src/main/java/com/lyms/platform/permission/service/impl/OrganizationServiceImpl.java +++ b/platform-biz-service/src/main/java/com/lyms/platform/permission/service/impl/OrganizationServiceImpl.java @@ -303,4 +303,9 @@ public class OrganizationServiceImpl extends DataAccessLayerService implements O return masterOrganizationMapper.getOrganizationName(id); } + @Override + public List> findIdByTownOrgId(String townOrgId) { + return masterOrganizationMapper.findIdByTownOrgId(townOrgId); + } + } \ No newline at end of file diff --git a/platform-biz-service/src/main/resources/mainOrm/master/MasterOrganization.xml b/platform-biz-service/src/main/resources/mainOrm/master/MasterOrganization.xml index c919a0f..e87f592 100644 --- a/platform-biz-service/src/main/resources/mainOrm/master/MasterOrganization.xml +++ b/platform-biz-service/src/main/resources/mainOrm/master/MasterOrganization.xml @@ -271,5 +271,9 @@ select id,name,type,level,area_manage,province_id,city_id,area_id,address,descri SELECT name FROM organization WHERE id=#{id,jdbcType=VARCHAR} + + \ No newline at end of file diff --git a/platform-dal/src/main/java/com/lyms/platform/query/MatDeliverQuery.java b/platform-dal/src/main/java/com/lyms/platform/query/MatDeliverQuery.java index 0180609..5ceefa8 100644 --- a/platform-dal/src/main/java/com/lyms/platform/query/MatDeliverQuery.java +++ b/platform-dal/src/main/java/com/lyms/platform/query/MatDeliverQuery.java @@ -309,8 +309,9 @@ public class MatDeliverQuery extends BaseQuery implements IConvertToNativeQuery } if (CollectionUtils.isNotEmpty(fmHospitalList)) { if (fsHospital != null) { - condition.orCondition(MongoCondition.newInstance("fmHospital", fmHospitalList, MongoOper.IN), MongoCondition.newInstance("fsHospital", fsHospital, MongoOper.IS)); -// condition = condition.and("fmHospital", fmHospitalList, MongoOper.IN); + /*condition.orCondition(MongoCondition.newInstance("fmHospital", fmHospitalList, MongoOper.IN), MongoCondition.newInstance("fsHospital", fsHospital, MongoOper.IS), + MongoCondition.newInstance("fsHospital", false, MongoOper.EXISTS));*/ + condition = condition.and("fmHospital", fmHospitalList, MongoOper.IN); // condition = condition.and("fsHospital", fsHospital, MongoOper.IN); } else { condition = condition.and("fmHospital", fmHospitalList, MongoOper.IN); @@ -319,13 +320,16 @@ public class MatDeliverQuery extends BaseQuery implements IConvertToNativeQuery if (null != fmHospital) { if (fsHospital != null) { - condition.orCondition(MongoCondition.newInstance("fmHospital", fmHospital, MongoOper.IS), MongoCondition.newInstance("fsHospital", fsHospital, MongoOper.IS)); + //condition.orCondition(MongoCondition.newInstance("fmHospital", fmHospital, MongoOper.IS), MongoCondition.newInstance("fsHospital", fsHospital, MongoOper.IS)); + condition = condition.and("fmHospital", fmHospital, MongoOper.IS); } else { condition = condition.and("fmHospital", fmHospital, MongoOper.IS); } } if (null != fsHospitalId) { - condition = condition.and("fmHospital", fsHospitalId, MongoOper.IS); + MongoCondition con1 = MongoCondition.newInstance("fsHospital", fsHospitalId, MongoOper.IS); + MongoCondition con2 = MongoCondition.newInstance("fsHospital", false, MongoOper.EXISTS); + condition.orCondition(con1, con2); } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/MatDeliverController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/MatDeliverController.java index dc9d386..300c2cb 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/MatDeliverController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/MatDeliverController.java @@ -111,6 +111,18 @@ public class MatDeliverController extends BaseController { } /** + * 更新分娩记录===> where 已分娩未进行产后访视并且小于28天 + * + * @return 返回 + */ + @RequestMapping(value = "/history/batch/update", method = RequestMethod.GET) + @ResponseBody + public BaseResponse historyBatchUpdate() { + BaseResponse baseResponse = matDeliverFacade.historyBatchUpdate(); + return baseResponse; + } + + /** * 删除一条删除记录 * * @param id 删除分娩记录 diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PregnantBuildController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PregnantBuildController.java index 9fd3b4e..e233b0a 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PregnantBuildController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PregnantBuildController.java @@ -602,15 +602,26 @@ public class PregnantBuildController extends BaseController{ /** * 更新mysql 机构表的townOrgId + * * @param request * @return */ @RequestMapping(value="/batchUpdateOrg",method=RequestMethod.GET) @ResponseBody public BaseResponse batchUpdateOrg(HttpServletRequest request) { - return bookbuildingFacade.batchUpdateOrg(request); + } + /** + * 更新mongDB 病人建档表 lyms_patient + * + * @param request + * @return + */ + @RequestMapping(value="/batchUpdateLymsPatient",method=RequestMethod.GET) + @ResponseBody + public BaseResponse batchUpdateLymsPatient(HttpServletRequest request) { + return bookbuildingFacade.batchUpdateLymsPatient(request); } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BookbuildingFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BookbuildingFacade.java index 716dcc1..8684981 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BookbuildingFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BookbuildingFacade.java @@ -21,6 +21,7 @@ import com.lyms.platform.operate.web.request.*; import com.lyms.platform.operate.web.result.*; import com.lyms.platform.operate.web.service.ITrackDownService; import com.lyms.platform.operate.web.utils.JdbcUtil; +import com.lyms.platform.operate.web.worker.BatchUpdateLymsPatient; import com.lyms.platform.operate.web.worker.CorrectDataWorker; import com.lyms.platform.operate.web.worker.SyncV2HistoryWorkerx; import com.lyms.platform.permission.dao.master.CouponMapper; @@ -33,6 +34,7 @@ import com.lyms.platform.permission.service.OrganizationService; import com.lyms.platform.permission.service.UsersService; import com.lyms.platform.pojo.*; import com.lyms.platform.query.*; +import com.mongodb.WriteResult; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.handlers.BeanListHandler; @@ -44,11 +46,13 @@ 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; +import org.springframework.data.mongodb.core.query.Update; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.client.RestTemplate; import org.springframework.web.multipart.MultipartFile; @@ -61,8 +65,12 @@ import java.sql.*; import java.text.SimpleDateFormat; import java.util.*; import java.util.Date; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicLong; +import java.util.regex.Pattern; /** * @@ -2394,7 +2402,68 @@ public class BookbuildingFacade { return connection; } + /** + * 更新org 表 + * + * @param request + * @return + */ public BaseResponse batchUpdateOrg(HttpServletRequest request) { - return null; + OrganizationQuery query = new OrganizationQuery(); + Integer updateSize = 0; + Integer errorSize = 0; + List organizations = organizationService.queryHospitals(query); + for (Organization organization: organizations) { + String name = organization.getName(); + List basicConfigs = mongoTemplate.find(Query.query(Criteria.where("name").is(name)), BasicConfig.class); + if (CollectionUtils.isNotEmpty(basicConfigs)) { + BasicConfig basicConfig = basicConfigs.get(0); + String basicConfigId = basicConfig.getId(); + if (basicConfigId.equals(organization.getTownOrgId())) { + continue; + } + Organization org = new Organization(); + org.setId(organization.getId()); + org.setTownOrgId(basicConfigId); + organizationService.updateOrganization(org); + updateSize ++; + } else { + System.out.println("暂无匹配数据, name===>" + name); + errorSize ++; + } + } + BaseResponse baseResponse = new BaseResponse(); + HashMap objectObjectHashMap = new HashMap<>(); + objectObjectHashMap.put("updateSize",updateSize); + objectObjectHashMap.put("errorSize", errorSize); + baseResponse.setObject(objectObjectHashMap); + return baseResponse; + } + + /** + * 更新mongDB 病人建档表 lyms_patient + * + * @param request + * @return + */ + public BaseResponse batchUpdateLymsPatient(HttpServletRequest request) { + + List patients = mongoTemplate.find(Query.query(Criteria.where("fmDate").exists(false).and("yn").is(1)), Patients.class); + ExecutorService service = Executors.newFixedThreadPool(5); + for (Patients patient : patients) { + /* if ("18328353220".equals(patient.getCardNo())) { + System.out.println(patient); + }*/ + service.execute(new BatchUpdateLymsPatient(patient, organizationService, mongoTemplate)); + } + service.shutdown(); + try { + service.awaitTermination(1, TimeUnit.HOURS); + } catch (InterruptedException e) { + e.printStackTrace(); + } + BaseResponse baseResponse = new BaseResponse(); + baseResponse.setObject(patients.size()); + return baseResponse; } } \ No newline at end of file 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 9d58eaa..4704820 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 @@ -40,6 +40,7 @@ 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; +import org.springframework.data.mongodb.core.query.Update; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Component; @@ -235,7 +236,7 @@ public class MatDeliverFacade { return new BaseResponse().setErrormsg("您已分娩").setErrorcode(ErrorCodeConstants.DATA_EXIST); } - if (CollectionUtils.isNotEmpty(patients2.getChildExtAddrs())) { + /*if (CollectionUtils.isNotEmpty(patients2.getChildExtAddrs())) { List childExts = patients2.getChildExtAddrs(); String extId = childExts.get(childExts.size() - 1); PostVisitHospitalModelQuery postQuery = new PostVisitHospitalModelQuery(); @@ -258,6 +259,10 @@ public class MatDeliverFacade { String postHosptial = postVisitHospitalModel.getPostHosptial(); maternalDeliverModel.setFsHospital(postHosptial); } + }*/ + String townOrgId = patients2.getTownOrgId(); + if (com.lyms.platform.common.utils.StringUtils.isNotEmpty(townOrgId)) { + maternalDeliverModel.setFsHospital(townOrgId); } matDeliverQuery.setDueDate(deliverAddRequest.getDueDate()); @@ -3061,4 +3066,37 @@ public class MatDeliverFacade { } return v3Val; } + + /** + * 更新分娩记录===> where 已分娩未进行产后访视并且小于28天 + * + * @return + */ + public BaseResponse historyBatchUpdate() { + List followModels = mongoTemplate.find(Query.query(new Criteria()), MatdeliverFollowModel.class); + List ids = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(followModels)) { + for (MatdeliverFollowModel followModel : followModels) { + ids.add(followModel.getParentid()); + } + } + List deliverModels = mongoTemplate.find(Query.query(Criteria.where("id").nin(ids)), MaternalDeliverModel.class); + Integer updateSize = 0; + for (MaternalDeliverModel model : deliverModels) { + String dueDate = model.getDueDate(); + if (com.lyms.platform.common.utils.StringUtils.isNotEmpty(dueDate)) { + Date date = DateUtil.parseYMD(dueDate); + long dateTime = date.getTime(); + long currentTime = System.currentTimeMillis(); + long betweenDays = (long) ((currentTime - dateTime) / (1000 * 60 * 60 * 24)); + if (betweenDays <= 28) { + mongoTemplate.updateFirst(Query.query(Criteria.where("id").is(model.getId())), new Update().unset("fsHospital"), MaternalDeliverModel.class); + updateSize++; + } + } + } + BaseResponse baseResponse = new BaseResponse(); + baseResponse.setObject("updateSize:" + updateSize + ";" + "find size:" + deliverModels.size()); + return baseResponse; + } } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PatientServiceFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PatientServiceFacade.java index 86f9583..17888d2 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PatientServiceFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PatientServiceFacade.java @@ -196,11 +196,12 @@ public class PatientServiceFacade { List towns = new ArrayList<>(); - //所有数据 - List basicConfigList = basicConfigService.queryBasicConfig(basicConfigQuery); + //所有数据 由原来的baseConfing ==> Organization + OrganizationQuery organizationQuery = new OrganizationQuery(); + List organizations = organizationService.queryOrganization(organizationQuery); - if (CollectionUtils.isNotEmpty(basicConfigList)) { - for (BasicConfig model : basicConfigList) { + if (CollectionUtils.isNotEmpty(organizations)) { + for (Organization model : organizations) { Map data = new HashMap(); data.put("id", model.getId()); data.put("name", model.getName()); diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/BatchUpdateLymsPatient.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/BatchUpdateLymsPatient.java new file mode 100644 index 0000000..500cda5 --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/BatchUpdateLymsPatient.java @@ -0,0 +1,52 @@ +package com.lyms.platform.operate.web.worker; + +import com.lyms.platform.common.utils.StringUtils; +import com.lyms.platform.permission.service.OrganizationService; +import com.lyms.platform.pojo.Patients; +import org.apache.commons.collections.CollectionUtils; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.data.mongodb.core.query.Query; +import org.springframework.data.mongodb.core.query.Update; + +import java.util.List; +import java.util.Map; +import java.util.regex.Pattern; + +/** + * + * @Author dongqin + * @Description + * @Date 11:41 2019/6/18 + */ + +public class BatchUpdateLymsPatient implements Runnable { + private Patients patient; + private OrganizationService organizationService; + private MongoTemplate mongoTemplate; + public static final String NUMBER_PATTERN = "^[-\\+]?[\\d]*$"; + + public BatchUpdateLymsPatient(final Patients patient, final OrganizationService organizationService, final MongoTemplate mongoTemplate) { + this.patient = patient; + this.organizationService = organizationService; + this.mongoTemplate = mongoTemplate; + } + + @Override + public void run() { + String townOrgId = patient.getTownOrgId(); + if (StringUtils.isNotEmpty(townOrgId)) { + Pattern pattern = Pattern.compile(NUMBER_PATTERN); + boolean isInteger = pattern.matcher(townOrgId).matches(); + if (!isInteger) { + List> ids = organizationService.findIdByTownOrgId(townOrgId); + if (CollectionUtils.isNotEmpty(ids)) { + patient.setTownOrgId(ids.get(0).get("id").toString()); + mongoTemplate.updateFirst(Query.query(Criteria.where("id").is(patient.getId())), Update.update("townOrgId", patient.getTownOrgId()), Patients.class); + }else { + mongoTemplate.updateFirst(Query.query(Criteria.where("id").is(patient.getId())), new Update().unset("townOrgId"), Patients.class); + } + } + } + } +} -- 1.8.3.1