Commit 381f6b5326938f1b2a3ff9db87f5d2d9bd0209aa

Authored by wtt
1 parent d0dcaf4585

update

Showing 4 changed files with 249 additions and 77 deletions

platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BabyEyeCheckController.java View file @ 381f6b5
... ... @@ -158,7 +158,7 @@
158 158 }
159 159  
160 160 /**
161   - * 眼保健管理,按照人次展示
  161 + * 眼保健管理,按照儿童档案次数展示
162 162 *
163 163 * @Author: 武涛涛
164 164 * @Date: 2020/8/3 14:09
platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabySpecialDiseaseClinicFacade.java View file @ 381f6b5
... ... @@ -252,6 +252,7 @@
252 252 }
253 253 }
254 254 br.setData(babySpecialDiseaseClinicResults);
  255 + br.setPageInfo(babyQuery.getPageInfo());
255 256 br.setErrorcode(ErrorCodeConstants.SUCCESS);
256 257 br.setErrormsg("成功");
257 258 return br;
platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BabyEyeCheckServiceImpl.java View file @ 381f6b5
... ... @@ -3,6 +3,7 @@
3 3 import com.lyms.platform.biz.service.BabyBookbuildingService;
4 4 import com.lyms.platform.biz.service.BasicConfigService;
5 5 import com.lyms.platform.biz.service.YunBookbuildingService;
  6 +import com.lyms.platform.common.constants.ErrorCodeConstants;
6 7 import com.lyms.platform.common.dao.BaseQuery;
7 8 import com.lyms.platform.common.enums.*;
8 9 import com.lyms.platform.common.pojo.SyncDataModel;
9 10  
10 11  
11 12  
12 13  
... ... @@ -13,29 +14,36 @@
13 14 import com.lyms.platform.operate.web.facade.OperateLogFacade;
14 15 import com.lyms.platform.operate.web.facade.OrganizationGroupsFacade;
15 16 import com.lyms.platform.operate.web.request.YunBookbuildingAddRequest;
  17 +import com.lyms.platform.operate.web.result.AntExManagerResult;
16 18 import com.lyms.platform.operate.web.service.BabyAfterVisitService;
17 19 import com.lyms.platform.operate.web.service.BabyEyeCheckService;
18 20 import com.lyms.platform.operate.web.utils.CollectionUtils;
19 21 import com.lyms.platform.operate.web.utils.MongoUtil;
20 22 import com.lyms.platform.operate.web.utils.ReflectUtil;
21 23 import com.lyms.platform.operate.web.utils.ResponseUtil;
  24 +import com.lyms.platform.operate.web.worker.BabyEyeCheckWorker;
  25 +import com.lyms.platform.operate.web.worker.SieveRegionalCqsievesWorker;
22 26 import com.lyms.platform.permission.dao.master.BabyEyeCheckMapper;
23 27 import com.lyms.platform.permission.dao.master.CouponMapper;
24 28 import com.lyms.platform.pojo.*;
25 29 import com.lyms.platform.query.BabyModelQuery;
26 30 import org.apache.commons.collections.map.HashedMap;
27 31 import org.springframework.beans.factory.annotation.Autowired;
  32 +import org.springframework.beans.factory.annotation.Qualifier;
28 33 import org.springframework.data.domain.Sort;
29 34 import org.springframework.data.mongodb.core.MongoTemplate;
30 35 import org.springframework.data.mongodb.core.query.Criteria;
31 36 import org.springframework.data.mongodb.core.query.Query;
32 37 import org.springframework.data.mongodb.core.query.Update;
  38 +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
33 39 import org.springframework.stereotype.Service;
34 40  
35 41 import javax.servlet.http.HttpServletResponse;
36 42 import java.io.File;
37 43 import java.io.Serializable;
38 44 import java.util.*;
  45 +import java.util.concurrent.Future;
  46 +import java.util.concurrent.TimeUnit;
39 47  
40 48 import static com.lyms.platform.operate.web.service.BabyAfterVisitService.*;
41 49  
42 50  
... ... @@ -52,8 +60,10 @@
52 60 private BabyBookbuildingService babyBookbuildingService;
53 61 @Autowired
54 62 private AutoMatchFacade autoMatchFacade;
55   -
56 63 @Autowired
  64 + @Qualifier("commonThreadPool")
  65 + private ThreadPoolTaskExecutor commonThreadPool;
  66 + @Autowired
57 67 private MongoTemplate mongoTemplate;
58 68  
59 69 @Autowired
60 70  
... ... @@ -859,21 +869,7 @@
859 869 Integer currentMonthEnd, String chechMonth, boolean positive, String positiveIds,
860 870 Integer page, Integer limit, Date bookStartDate, Date bookEndDate,
861 871 String apparatusPositive, String doctorPositive, String yin, String noPassIds) {
862   - /*
863   - 1 获取所有儿童建档数据,筛查做过眼保健检查的档案。
864 872  
865   - 2 眼保健建档新增一个字段标示可以展示到眼保健管理。其它建档可以不管。
866   -
867   - 3 其它建档在做眼保健检查。给该档案也标记成可以展示到眼保健管理状态。
868   -
869   - 4 列表展示儿童档案,第一有眼保健检查数据。第二档案有标记状态可以展示。
870   - 如何避免重复叠加,
871   - 1 以前建档的永远不标记可以展示状态。
872   - 2 以前其它建档没有眼保健检查的可以标记展示状态。
873   - 3 先查建档关联的有检查结果数据档案。在查有标记状态的档案。合并。在去除重复避免重叠
874   -
875   - 5 新增的档案,只是标记状态不冗余其它字段
876   - */
877 873 String hospitalId = autoMatchFacade.getHospitalId(userId);
878 874 boolean b = true;
879 875  
880 876  
881 877  
882 878  
883 879  
884 880  
885 881  
... ... @@ -954,67 +950,39 @@
954 950 }
955 951  
956 952 /*end */
  953 + List<String> babyIds = new ArrayList<>();
  954 +
957 955 if (positive) {
  956 + List<BabyEyeCheck> babyEyeChecks = mongoUtil.findField(BabyEyeCheck.class,criteria.orOperator(Criteria.where("apparatus").is("2"),Criteria.where("doctorJudgement").is("2")),"babyId");
  957 + babyIds = CollectionUtils.getId(babyEyeChecks, "babyId", String.class);
  958 + babyIds = new ArrayList<String>(new LinkedHashSet<String>(babyIds));
958 959  
959   - Query query = new Query(criteria);
960   - query.with(new Sort(Sort.Direction.DESC, "created"));
961   - query.addCriteria(new Criteria().orOperator(Criteria.where("apparatus").is("2"), Criteria.where("doctorJudgement").is("2")));
962   - System.out.println(query.toString());
963   -
964   - int count = (int) mongoTemplate.count(query, BabyEyeCheck.class);
965   -
966   - BaseQuery param = new BaseQuery();
967   - param.setPage(page);
968   - param.setLimit(limit);
969   - param.mysqlBuild(count);
970   - query.skip(param.getOffset()).limit(param.getLimit());
971   -
972   - List<BabyEyeCheck> babyEyeChecks = mongoTemplate.find(query, BabyEyeCheck.class);
973   - // doFilter(babyEyeChecks);
974   -
975   - if (StringUtils.isNotEmpty(positiveIds)) {
  960 + /*if (StringUtils.isNotEmpty(positiveIds)) {
976 961 List<String> ids = CollectionUtils.asList(positiveIds, String.class);
977 962 if (CollectionUtils.isNotEmpty(ids)) {
978 963 doFilter(babyEyeChecks, ids);
979 964 }
980   - }
981   - //Integer count = babyEyeChecks.size();
  965 + }*/
982 966  
983   - // List<BabyEyeCheck> datas = CollectionUtils.getPageIds(babyEyeChecks, page, limit);
984   - List<Map<String, Object>> maps = setDatas(babyEyeChecks);
985   - return RespBuilder.buildSuccess(new PageResult(count, page, limit, maps));
  967 + }else {
  968 + //存放,没有在眼保健建档或在眼保健建档,做个眼保健检查的档案。
  969 + List<String> babyIdBabyEyeCheck = new ArrayList<>();
  970 + List<BabyEyeCheck> babyEyeChecks = mongoUtil.findField(BabyEyeCheck.class, criteria.and("displayState").is(null), "babyId");//新的检查displayState=1这里不查看新的因为新的档案中可以获取
  971 + babyIdBabyEyeCheck = CollectionUtils.getId(babyEyeChecks, "babyId", String.class);
  972 + if (CollectionUtils.isNotEmpty(babyIdBabyEyeCheck)) {
  973 + babyIdBabyEyeCheck = new ArrayList<String>(new LinkedHashSet<String>(babyIdBabyEyeCheck));
  974 + babyIds.addAll(babyIdBabyEyeCheck);
  975 + }
  976 + //获取在眼保健新增的新档案,历史不回去。
  977 + Criteria c =Criteria.where("yn").ne("0").and("hospitalId").is(hospitalId).and("displayState").is("1");
  978 + List<BabyModel> babyModels = mongoUtil.findField(BabyModel.class, c, "id");
  979 + List<String> babyIdsBabyModels = CollectionUtils.getId(babyModels, "id", String.class);
  980 + if (CollectionUtils.isNotEmpty(babyIdsBabyModels)) {
  981 + babyIdsBabyModels = new ArrayList<String>(new LinkedHashSet<String>(babyIdsBabyModels));
  982 + babyIds.addAll(babyIdsBabyModels);
  983 + }
986 984 }
987   - /* PageResult pageResult = findMongoPage(BabyEyeCheck.class, new Query(criteria).with(new Sort(Sort.Direction.DESC, "created")), page, limit);
988   - List<BabyEyeCheck> babyEyeChecks = (List<BabyEyeCheck>) pageResult.getGrid();
989   - pageResult.setGrid(setDatas(babyEyeChecks));
990   - return RespBuilder.buildSuccess(pageResult);*/
991   - List<String> babyIds = new ArrayList<>();
992 985  
993   -
994   - //存放,没有在眼保健建档或在眼保健建档,做个眼保健检查的档案。
995   - List<String> babyIdBabyEyeCheck = new ArrayList<>();
996   - List<BabyEyeCheck> babyEyeChecks = mongoUtil.findField(BabyEyeCheck.class, criteria.and("displayState").is(null), "babyId");//新的检查displayState=1这里不查看新的因为新的档案中可以获取
997   - babyIdBabyEyeCheck = CollectionUtils.getId(babyEyeChecks, "babyId", String.class);
998   - System.out.println("1 未去重 "+babyIdBabyEyeCheck.size());
999   - if (CollectionUtils.isNotEmpty(babyIdBabyEyeCheck)) {
1000   - babyIdBabyEyeCheck = new ArrayList<String>(new LinkedHashSet<String>(babyIdBabyEyeCheck));
1001   - System.out.println("1 去重后 "+babyIdBabyEyeCheck.size());
1002   - babyIds.addAll(babyIdBabyEyeCheck);
1003   - }
1004   - //获取在眼保健新增的新档案,历史不回去。
1005   - Criteria c =Criteria.where("yn").ne("0").and("hospitalId").is(hospitalId).and("displayState").is("1");
1006   - List<BabyModel> babyModels = mongoUtil.findField(BabyModel.class, c, "id");
1007   - List<String> babyIdsBabyModels = CollectionUtils.getId(babyModels, "id", String.class);
1008   - System.out.println("2 未去重 "+babyIdsBabyModels.size());
1009   - if (CollectionUtils.isNotEmpty(babyIdsBabyModels)) {
1010   - babyIdsBabyModels = new ArrayList<String>(new LinkedHashSet<String>(babyIdsBabyModels));
1011   - System.out.println("2 去重后 "+babyIdsBabyModels.size());
1012   - babyIds.addAll(babyIdsBabyModels);
1013   - }
1014   - babyIds = new ArrayList<String>(new LinkedHashSet<String>(babyIds));
1015   - System.out.println("总共档案条数 "+ babyIds.size());
1016   -
1017   -
1018 986 //控制建档查询。
1019 987 Criteria cbaby = new Criteria();
1020 988 if (startBuildDate != null && endBuildDate != null) {
1021 989  
... ... @@ -1023,16 +991,40 @@
1023 991 List<BabyModel> jdbabyModels = mongoUtil.findField(BabyModel.class, cbaby, "id");
1024 992 babyIds = CollectionUtils.getId(jdbabyModels, "id", String.class);
1025 993 }
  994 + babyIds = new ArrayList<String>(new LinkedHashSet<String>(babyIds));
  995 + BabyModelQuery babyModelQuery = new BabyModelQuery();
  996 + babyModelQuery.setNeed("true");
  997 + babyModelQuery.setIds(babyIds);
  998 + babyModelQuery.setPage(page);
  999 + babyModelQuery.setLimit(limit);
  1000 + babyModelQuery.setYn(YnEnums.YES.getId());
  1001 + List<BabyModel> babyModelList = babyBookbuildingService.queryBabyBuildByCond(babyModelQuery);
  1002 + //根据建档id查询档案表,并且分页。关联眼保健检查。
  1003 + int batchSize = 4;
  1004 + int end = 0;
  1005 + List<Future> listFuture = new ArrayList<>();
  1006 + for (int i = 0; i < babyModelList.size(); i += batchSize) {
  1007 + end = (end + batchSize);
  1008 + if (end > babyModelList.size()) {
  1009 + end = babyModelList.size();
  1010 + }
  1011 + listFuture.add(commonThreadPool.submit(new BabyEyeCheckWorker(babyModelList.subList(i, end),mongoTemplate,couponMapper)));
  1012 + }
  1013 + List<Map> data = new ArrayList<>();
  1014 + for (Future f : listFuture) {
  1015 + try {
  1016 + data.addAll((List) f.get(30, TimeUnit.SECONDS));
  1017 + } catch (Exception e) {
  1018 + ExceptionUtils.catchException(e, "cqSieve list get result Future error.");
  1019 + }
  1020 + }
1026 1021  
1027   -
1028   -
1029   - System.out.println("建档条件后---总共档案条数 "+ babyIds.size());
1030   -
1031   - //更加建档id查询档案表,并且分页。关联眼保健检查。
1032   -
1033   -
1034   -
1035   - return null;
  1022 + BaseListResponse objectResponse = new BaseListResponse();
  1023 + objectResponse.setErrorcode(ErrorCodeConstants.SUCCESS);
  1024 + objectResponse.setData(data);
  1025 + objectResponse.setPageInfo(babyModelQuery.getPageInfo());
  1026 + objectResponse.setErrormsg("成功");
  1027 + return objectResponse;
1036 1028 }
1037 1029  
1038 1030 private void doFilter(List<BabyEyeCheck> babyEyeChecks, List<String> ids) {
platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/BabyEyeCheckWorker.java View file @ 381f6b5
  1 +package com.lyms.platform.operate.web.worker;
  2 +
  3 +import com.lyms.platform.common.dao.BaseQuery;
  4 +import com.lyms.platform.common.utils.DateUtil;
  5 +import com.lyms.platform.common.utils.StringUtils;
  6 +import com.lyms.platform.operate.web.utils.CollectionUtils;
  7 +import com.lyms.platform.permission.dao.master.CouponMapper;
  8 +import com.lyms.platform.pojo.BabyEyeCheck;
  9 +import com.lyms.platform.pojo.BabyModel;
  10 +import org.springframework.data.domain.Sort;
  11 +import org.springframework.data.mongodb.core.MongoTemplate;
  12 +import org.springframework.data.mongodb.core.query.Criteria;
  13 +import org.springframework.data.mongodb.core.query.Query;
  14 +
  15 +import java.util.ArrayList;
  16 +import java.util.HashMap;
  17 +import java.util.List;
  18 +import java.util.Map;
  19 +import java.util.concurrent.Callable;
  20 +
  21 +
  22 +public class BabyEyeCheckWorker implements Callable<List<Map>> {
  23 +
  24 +
  25 + private List<BabyModel> list;
  26 +
  27 + private MongoTemplate mongoTemplate;
  28 + private CouponMapper couponMapper;
  29 + public BabyEyeCheckWorker(List<BabyModel> list, MongoTemplate mongoTemplate, CouponMapper couponMapper) {
  30 + this.list = list;
  31 + this.mongoTemplate = mongoTemplate;
  32 + this.couponMapper = couponMapper;
  33 + }
  34 +
  35 +
  36 + @Override
  37 + public List<Map> call() throws Exception {
  38 + List<Map> results = new ArrayList<>();
  39 +
  40 + for (BabyModel babyModel : list) {
  41 + Map mapResult = new HashMap();
  42 + mapResult.put("babyId", babyModel.getId());//儿童档案id
  43 + mapResult.put("babyName", babyModel.getName());//儿童姓名
  44 + if(babyModel.getSex()!=null && babyModel.getSex()==0){
  45 + mapResult.put("sex", "女");//性别
  46 + }else if(babyModel.getSex()!=null && babyModel.getSex()==1){
  47 + mapResult.put("sex", "男");
  48 + }else {
  49 + mapResult.put("sex", "_");
  50 + }
  51 + mapResult.put("mname", babyModel.getMname());//母亲姓名
  52 + mapResult.put("birth", DateUtil.getyyyy_MM_dd(babyModel.getBirth()));//出生日期
  53 + mapResult.put("buildDate", DateUtil.getyyyy_MM_dd(babyModel.getBuildDate()));//建档日期
  54 + if(babyModel!=null && StringUtils.isNotEmpty(babyModel.getId())){
  55 + List<BabyEyeCheck> checkModels = mongoTemplate.find(Query.query(Criteria.where("babyId").is(babyModel.getId()).and("yn").is("1")).with(new Sort(Sort.Direction.DESC, "modified")), BabyEyeCheck.class);
  56 + if(CollectionUtils.isNotEmpty(checkModels)){
  57 + BabyEyeCheck babyEyeCheck = checkModels.get(0);
  58 + mapResult.put("checkMonthAge", babyEyeCheck.getCheckMonthAge());//检查月龄
  59 + StringBuilder positive = getYxxm(babyEyeCheck);//阳性项目
  60 + mapResult.put("positive", positive.toString());//阳性项目
  61 + mapResult.put("doctor", couponMapper.getUserName(babyEyeCheck.getDoctor()));//检查医生
  62 + mapResult.put("checkTime", DateUtil.getYyyyMmDd(babyEyeCheck.getCheckTime()));//检查日期
  63 + mapResult.put("nextCheckTime", DateUtil.getYyyyMmDd(babyEyeCheck.getNextCheckTime()));//预约日期
  64 + }else {
  65 + mapResult.put("checkMonthAge", "");
  66 + mapResult.put("positive", "");
  67 + mapResult.put("doctor", "");
  68 + mapResult.put("checkTime", "");
  69 + mapResult.put("nextCheckTime", "");
  70 + }
  71 + }
  72 + results.add(mapResult);
  73 + }
  74 + return results;
  75 + }
  76 +
  77 + private StringBuilder getYxxm(BabyEyeCheck babyEyeCheck) {
  78 + StringBuilder positive = new StringBuilder(); /** 阳性项目 */
  79 + if ("yang".equals(babyEyeCheck.getExtRightEyelook())) {
  80 + positive.append("外眼观察(右) ");
  81 + }
  82 + if ("yang".equals(babyEyeCheck.getExtLeftEyelook())) {
  83 + positive.append("外眼观察(左) ");
  84 + }
  85 + if ("yang".equals(babyEyeCheck.getBlinkRightReflex())) {
  86 + positive.append("瞬目反射(右) ");
  87 + }
  88 + if ("yang".equals(babyEyeCheck.getBlinkLefttReflex())) {
  89 + positive.append("瞬目反射(左) ");
  90 + }
  91 + if ("yang".equals(babyEyeCheck.getPupillaryRightReflex())) {
  92 + positive.append("瞳孔对光反射(右) ");
  93 + }
  94 + if ("yang".equals(babyEyeCheck.getPupillaryLeftReflex())) {
  95 + positive.append("瞳孔对光反射(左) ");
  96 + }
  97 + if ("yang".equals(babyEyeCheck.getRedRightReflex())) {
  98 + positive.append("瞳孔红光反射(右) ");
  99 + }
  100 + if ("yang".equals(babyEyeCheck.getRedLeftReflex())) {
  101 + positive.append("瞳孔红光反射(左) ");
  102 + }
  103 + if ("yang".equals(babyEyeCheck.getRedReflex())) {
  104 + positive.append("红光反射 ");
  105 + }
  106 + if ("yang".equals(babyEyeCheck.getConjunctiva())) {
  107 + positive.append("结膜 ");
  108 + }
  109 + if ("yang".equals(babyEyeCheck.getCorneal())) {
  110 + positive.append("角膜 ");
  111 + }
  112 + if ("yang".equals(babyEyeCheck.getLacrimalApparatus())) {
  113 + positive.append("泪器 ");
  114 + }
  115 + if ("yang".equals(babyEyeCheck.getNystagmus())) {
  116 + positive.append("视动性眼震 ");
  117 + }
  118 + if ("yang".equals(babyEyeCheck.getExtEyelook())) {
  119 + positive.append("外眼观察 ");
  120 + }
  121 + if ("yang".equals(babyEyeCheck.getEyePositionId2())) {
  122 + positive.append("眼位(医生判定)");
  123 + }
  124 + if ("yang".equals(babyEyeCheck.getRedLeft2())) {
  125 + positive.append("红光反射(医生判定阳性)");
  126 + }
  127 + if ("yang".equals(babyEyeCheck.getVision2())) {
  128 + positive.append("视力(医生判定阳性)");
  129 + }
  130 + if ("yang".equals(babyEyeCheck.getY2())) {
  131 + positive.append("手持眼光仪(医生判定阳性)");
  132 + }
  133 + if ("yang".equals(babyEyeCheck.getRefraction2())) {
  134 + if ("197".equals(babyEyeCheck.getHospitalId())) {
  135 + positive.append("屈光不正");
  136 + } else {
  137 + positive.append("屈光(医生判定阳性)");
  138 + }
  139 +
  140 + }
  141 +
  142 + if ("ruoyang".equals(babyEyeCheck.getRedRightReflex())) {
  143 + positive.append("瞳孔红光反射(右)(稍减弱)");
  144 + }
  145 + if ("ruoyang".equals(babyEyeCheck.getRedLeftReflex())) {
  146 + positive.append("瞳孔红光反射(左)(稍减弱)");
  147 + }
  148 + if ("ruoyang".equals(babyEyeCheck.getRedReflex())) {
  149 + positive.append("红光反射(稍减弱)");
  150 + }
  151 +
  152 + if ("2".equals(babyEyeCheck.getEyeAppearance())) {
  153 + positive.append("眼外观 ");
  154 + }
  155 + if ("2".equals(babyEyeCheck.getRedReflexQhd())) {
  156 + positive.append("红光反射 ");
  157 + }
  158 + if ("2".equals(babyEyeCheck.getBlinkReflex())) {
  159 + positive.append("瞬目反射 ");
  160 + }
  161 + if ("2".equals(babyEyeCheck.getRedBallTest())) {
  162 + positive.append("红球试验 ");
  163 + }
  164 + if ("2".equals(babyEyeCheck.getBehaviorObservation())) {
  165 + positive.append("视物行为观察 ");
  166 + }
  167 + if ("2".equals(babyEyeCheck.getRefractiveScreening())) {
  168 + positive.append("屈光筛查 ");
  169 + }
  170 + if ("2".equals(babyEyeCheck.getEyePositionExamination())) {
  171 + positive.append("眼位检查 ");
  172 + }
  173 + if ("2".equals(babyEyeCheck.getEyeMovement())) {
  174 + positive.append("眼球运动 ");
  175 + }
  176 + return positive;
  177 + }
  178 +
  179 +}