Commit 9e285f23326c1722cb71070b8499f1da4d6dd58d

Authored by zhangchao
1 parent aaabbfcf7e
Exists in dev

#fix:优化五色专案管理 查询五色逻辑

Showing 3 changed files with 110 additions and 30 deletions

platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/PatientsService.java View file @ 9e285f2
... ... @@ -132,7 +132,7 @@
132 132 patientsQuery.mysqlBuild(iPatientDao.queryPatientCount(query));
133 133 query.start(patientsQuery.getOffset()).end(patientsQuery.getLimit());
134 134 }
135   - // System.out.println(query.convertToMongoQuery().toString());
  135 + // System.out.println(query.convertToMongoQuery().toString());
136 136 return iPatientDao.queryPatient(query.addOrder(Sort.Direction.fromString(sort), field));
137 137 }
138 138  
139 139  
... ... @@ -142,8 +142,13 @@
142 142 }
143 143  
144 144 public int queryPatientCount(PatientsQuery patientsQuery) {
145   - System.out.println(patientsQuery.convertToQuery().convertToMongoQuery().toString());
  145 + // System.out.println(patientsQuery.convertToQuery().convertToMongoQuery().toString());
146 146 return iPatientDao.queryPatientCount(patientsQuery.convertToQuery());
  147 + }
  148 +
  149 + public int queryRiskCount(MongoQuery query){
  150 + // System.out.println(query.convertToMongoQuery().toString());
  151 + return iPatientDao.queryPatientCount(query);
147 152 }
148 153  
149 154 public int queryPatientCount(String _id) {
platform-dal/src/main/java/com/lyms/platform/query/PatientsQuery.java View file @ 9e285f2
... ... @@ -11,6 +11,7 @@
11 11 import org.springframework.data.mongodb.core.query.Criteria;
12 12  
13 13 import java.util.*;
  14 +import java.util.regex.Pattern;
14 15  
15 16 /**
16 17 * 产妇模型定义
17 18  
... ... @@ -1125,8 +1126,8 @@
1125 1126  
1126 1127 Criteria c1 = null;
1127 1128  
  1129 + Criteria c5 = MongoCondition.newInstance().getCriteria();
1128 1130  
1129   -
1130 1131 if (StringUtils.isNotEmpty(rLevel)) {
1131 1132 //大同特殊处理 按颜色等于查询
1132 1133 if("2100002419".equals(hospitalId)&&StringUtils.isEmpty(allPats)){
1133 1134  
1134 1135  
1135 1136  
1136 1137  
1137 1138  
1138 1139  
1139 1140  
1140 1141  
... ... @@ -1316,38 +1317,40 @@
1316 1317 }else {
1317 1318 condition = condition.and("riskLevelId", JsonUtil.array2JsonString(levelList), MongoOper.IS);
1318 1319 }
1319   -
1320 1320 }
1321   -
1322 1321 }else {
1323   - String [] strs= allPats.split(",");
1324   - //针对单颜色级别处理 如果是单颜色level是1查询包含此颜色及紫色的所有数据
1325   - if(strs.length>1){
1326   - if ("1".equals(strs[1]) && !"224b2329-cb82-4da3-a071-8527f8283aab".equals(rLevel)){
  1322 + if ("1".equals(allPats)){
  1323 + //黄色 查询黄色和紫色
  1324 + if ("315107bd-91fe-42a1-9237-752f3c046a40".equals(rLevel)){
1327 1325 List<String> riskLevelIds=new ArrayList<>();
1328 1326 riskLevelIds.add(rLevel);
1329 1327 MongoCondition c = MongoCondition.newInstance();
1330 1328 MongoCondition condition1 = MongoCondition.newInstance("riskLevelId", JsonUtil.array2JsonString(riskLevelIds), MongoOper.IS);
1331   -
1332 1329 riskLevelIds.add("224b2329-cb82-4da3-a071-8527f8283aab");
1333   -
1334 1330 MongoCondition condition2 = MongoCondition.newInstance("riskLevelId",JsonUtil.array2JsonString(riskLevelIds), MongoOper.IS);
1335 1331 riskLevelIds.clear();
1336   -
1337 1332 riskLevelIds.add("224b2329-cb82-4da3-a071-8527f8283aab");
1338 1333 riskLevelIds.add(rLevel);
1339 1334 MongoCondition condition3 = MongoCondition.newInstance("riskLevelId",JsonUtil.array2JsonString(riskLevelIds), MongoOper.IS);
1340 1335 if (c1 != null) {
1341   - c1 = c1.andOperator(c.orCondition(new MongoCondition[]{condition1, condition2,condition3}).getCriteria());
1342   - } else {
1343   - c1 = c.orCondition(new MongoCondition[]{condition1, condition2,condition3}).getCriteria();
1344   - }
  1336 + c1 = c1.andOperator(c.orCondition(new MongoCondition[]{condition1, condition2,condition3}).getCriteria());
  1337 + } else {
  1338 + c1 = c.orCondition(new MongoCondition[]{condition1, condition2,condition3}).getCriteria();
  1339 + }
  1340 + //橙色 查询除了红色以外的
  1341 + }else if ("49a36aea-c5b6-4162-87d2-9eb3c6ec00c2".equals(rLevel)){
  1342 + //查询不包含红色 eb146c03-b19f-4e28-b85f-fda574b2283b
  1343 + Pattern compile = Pattern.compile("^((?!" + "eb146c03-b19f-4e28-b85f-fda574b2283b"+ ").)*$", Pattern.CASE_INSENSITIVE);
  1344 + c5 =Criteria.where("riskLevelId").is(compile).regex(rLevel);
  1345 + //红色查询所有包含红色的
  1346 + }else if ("eb146c03-b19f-4e28-b85f-fda574b2283b".equals(rLevel)){
  1347 + condition = condition.and("riskLevelId", rLevel,MongoOper.LIKE);
1345 1348 }else {
1346 1349 List<String> riskLevelIds=new ArrayList<>();
1347 1350 riskLevelIds.add(rLevel);
1348   - condition = condition.and("riskLevelId", JsonUtil.array2JsonString(riskLevelIds), MongoOper.IS);
  1351 + condition = condition.and("riskLevelId", JsonUtil.array2JsonString(riskLevelIds),MongoOper.IS);
1349 1352 }
1350   - }else {
  1353 + }else{
1351 1354 condition = condition.and("riskLevelId", rLevel, MongoOper.LIKE);
1352 1355 }
1353 1356  
1354 1357  
... ... @@ -1926,10 +1929,10 @@
1926 1929 c4.and("firstCheckId").exists(firstCheckId2);
1927 1930 }
1928 1931 if (null != c1) {
1929   - return new MongoCondition(c1.andOperator(condition.getCriteria(), c2, c3, c4)).toMongoQuery();
  1932 + return new MongoCondition(c1.andOperator(condition.getCriteria(), c2, c3, c4,c5)).toMongoQuery();
1930 1933 // return new MongoCondition(c1.andOperator(condition.getCriteria())).toMongoQuery();
1931 1934 }
1932   - return new MongoCondition(c2.andOperator(condition.getCriteria(), c3, c4)).toMongoQuery();
  1935 + return new MongoCondition(c2.andOperator(condition.getCriteria(), c3, c4,c5)).toMongoQuery();
1933 1936 // return condition.toMongoQuery();
1934 1937 }
1935 1938  
platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/RiskReportFacade.java View file @ 9e285f2
... ... @@ -5,6 +5,9 @@
5 5 import com.lyms.platform.biz.service.BasicConfigService;
6 6 import com.lyms.platform.biz.service.PatientsService;
7 7 import com.lyms.platform.common.constants.ErrorCodeConstants;
  8 +import com.lyms.platform.common.dao.operator.MongoCondition;
  9 +import com.lyms.platform.common.dao.operator.MongoOper;
  10 +import com.lyms.platform.common.dao.operator.MongoQuery;
8 11 import com.lyms.platform.common.enums.YnEnums;
9 12 import com.lyms.platform.common.result.BaseListResponse;
10 13 import com.lyms.platform.common.result.BaseObjectResponse;
... ... @@ -30,6 +33,7 @@
30 33 import org.apache.commons.collections.MapUtils;
31 34 import org.springframework.beans.factory.annotation.Autowired;
32 35 import org.springframework.beans.factory.annotation.Qualifier;
  36 +import org.springframework.data.mongodb.core.query.Criteria;
33 37 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
34 38 import org.springframework.stereotype.Component;
35 39  
... ... @@ -40,6 +44,7 @@
40 44 import java.util.*;
41 45 import java.util.concurrent.*;
42 46 import java.util.concurrent.atomic.AtomicInteger;
  47 +import java.util.regex.Pattern;
43 48  
44 49 @Component
45 50 public class RiskReportFacade {
46 51  
47 52  
48 53  
49 54  
50 55  
... ... @@ -711,24 +716,27 @@
711 716  
712 717 List<BasicConfig> riskLevelConfig = basicConfigService.queryBasicConfig(basicConfigQuery);
713 718 if (CollectionUtils.isNotEmpty(riskLevelConfig)) {
714   - riskLevelConfig=addRisk(riskLevelConfig);
  719 + riskLevelConfig=addRisk(riskLevelConfig);
715 720 for (BasicConfig levelConfig : riskLevelConfig) {
716 721 if ("e637b361-99cf-41eb-84f2-f0dab596e928".equals(levelConfig.getId())) {
717 722 continue;
718 723 }
  724 + int allPatientCount=0;
  725 + patientsQuery.setrLevel(levelConfig.getId());
719 726 //高危等级
720 727 List<String> levelList= StringUtils.covertToList(levelConfig.getId(), String.class);
721   - if (levelList.size()==1){
  728 + if (levelList.size()==1&& (StringUtils.isEmpty(levelConfig.getLevel())|| "1".equals(levelConfig.getLevel()))){
  729 +
722 730 if (StringUtils.isEmpty(levelConfig.getLevel())){
723 731 levelConfig.setLevel("1");
724 732 }
725   - //针对与单颜色做特殊处理
726   - patientsQuery.setAllPats("allPats,"+levelConfig.getLevel());
  733 + //针对与单颜色做特殊处理
  734 + allPatientCount= patientsService.queryRiskCount(getQuery(patientsQuery));
727 735 }else {
728 736 patientsQuery.setAllPats("");
  737 + allPatientCount = patientsService.queryPatientCount(patientsQuery);
729 738 }
730   - patientsQuery.setrLevel(levelConfig.getId());
731   - int allPatientCount = patientsService.queryPatientCount(patientsQuery);
  739 +
732 740 if (allPatientCount>0){
733 741 RiskReportResult risk = new RiskReportResult();
734 742 risk.setLevel(Integer.valueOf(levelConfig.getLevel()));
... ... @@ -747,6 +755,70 @@
747 755 .setErrormsg("成功").setErrorcode(ErrorCodeConstants.SUCCESS).setData(results);
748 756 }
749 757  
  758 +
  759 + private MongoQuery getQuery(PatientsQuery patientsQuery){
  760 + Criteria c1 = Criteria.where("hospitalId").is(patientsQuery.getHospitalId()).and("yn").is(1);
  761 + String rLevel=patientsQuery.getrLevel();
  762 + if (patientsQuery.getType()!=null &&patientsQuery.getType()!=-1){
  763 + if (patientsQuery.getType()==1){
  764 + c1=c1.and("dtFm").ne(0);
  765 + }
  766 + c1=c1.and("type").is(patientsQuery.getType());
  767 + }
  768 + if (StringUtils.isNotEmpty(patientsQuery.getLastCheckEmployeeId())){
  769 + c1=c1.and("lastCheckEmployeeId").is(patientsQuery.getLastCheckEmployeeId());
  770 + }
  771 + if (null != patientsQuery.getLastCTimeStart()) {
  772 + c1 = c1.and("lastCTime").gte(patientsQuery.getLastCTimeStart());
  773 + }
  774 + if (null != patientsQuery.getLastCTimeEnd()) {
  775 + c1 = c1.lte(patientsQuery.getLastCTimeEnd());
  776 + }
  777 + List buildTypes = new ArrayList();
  778 + buildTypes.add(0);
  779 + buildTypes.add(2);
  780 + Criteria buildType =Criteria.where("buildType").is(3).and("enable").is(1);
  781 + Criteria buildType2= Criteria.where("buildType").in(buildTypes);
  782 + c1=c1.orOperator(buildType,buildType2);
  783 +
  784 + //针对单颜色级别处理 如果是单颜色level是1查询包含此颜色及紫色的所有数据
  785 + if (!"224b2329-cb82-4da3-a071-8527f8283aab".equals(rLevel)){
  786 + //黄色只查询 黄色和紫色
  787 + if("315107bd-91fe-42a1-9237-752f3c046a40".equals(rLevel)){
  788 + List<String> riskLevelIds=new ArrayList<>();
  789 + riskLevelIds.add(rLevel);
  790 + MongoCondition c = MongoCondition.newInstance();
  791 + MongoCondition condition1 = MongoCondition.newInstance("riskLevelId", JsonUtil.array2JsonString(riskLevelIds), MongoOper.IS);
  792 + riskLevelIds.add("224b2329-cb82-4da3-a071-8527f8283aab");
  793 + MongoCondition condition2 = MongoCondition.newInstance("riskLevelId",JsonUtil.array2JsonString(riskLevelIds), MongoOper.IS);
  794 + riskLevelIds.clear();
  795 + riskLevelIds.add("224b2329-cb82-4da3-a071-8527f8283aab");
  796 + riskLevelIds.add(rLevel);
  797 + MongoCondition condition3 = MongoCondition.newInstance("riskLevelId",JsonUtil.array2JsonString(riskLevelIds), MongoOper.IS);
  798 +
  799 + c1 = c1.andOperator(c.orCondition(new MongoCondition[]{condition1, condition2,condition3}).getCriteria());
  800 + //橙色需要查询 不包含红色 eb146c03-b19f-4e28-b85f-fda574b2283b
  801 + }else if ("49a36aea-c5b6-4162-87d2-9eb3c6ec00c2".equals(rLevel)){
  802 + /* Criteria c2 =Criteria.where("riskLevelId").ne("[]");
  803 + Criteria c3 =Criteria.where("riskLevelId").exists(true);*/
  804 + Criteria c4 =Criteria.where("riskLevelId").regex(rLevel);
  805 + //查询不包含红色 eb146c03-b19f-4e28-b85f-fda574b2283b
  806 + Pattern compile = Pattern.compile("^((?!" + "eb146c03-b19f-4e28-b85f-fda574b2283b"+ ").)*$", Pattern.CASE_INSENSITIVE);
  807 + Criteria c5 =Criteria.where("riskLevelId").is(compile);
  808 + c1=c1.andOperator(c4,c5);
  809 + }else if ("eb146c03-b19f-4e28-b85f-fda574b2283b".equals(rLevel)){
  810 + Criteria c4 =Criteria.where("riskLevelId").regex(rLevel);
  811 + c1=c1.andOperator(c4);
  812 + }
  813 + }else {
  814 + List<String> riskLevelIds=new ArrayList<>();
  815 + riskLevelIds.add(rLevel);
  816 + c1 = c1.and("riskLevelId").is(JsonUtil.array2JsonString(riskLevelIds));
  817 + }
  818 +
  819 + return new MongoCondition(c1).toMongoQuery();
  820 + }
  821 +
750 822 private static List<BasicConfig> basicConfigs;
751 823  
752 824 private static List<BasicConfig> addRisk(List<BasicConfig> basicConfigList){
... ... @@ -790,7 +862,7 @@
790 862 BasicConfig chz =new BasicConfig();
791 863 chz.setName("橙色-黄色-紫色");
792 864 chz.setpId("fb43fd5a-b153-4cb9-9180-c46f5612ba43");
793   - chz.setLevel("3");
  865 + chz.setLevel("2");
794 866 chz.setId("49a36aea-c5b6-4162-87d2-9eb3c6ec00c2,315107bd-91fe-42a1-9237-752f3c046a40,224b2329-cb82-4da3-a071-8527f8283aab");
795 867 basicConfigList.add(chz);
796 868 BasicConfig hs =new BasicConfig();
797 869  
798 870  
... ... @@ -826,19 +898,19 @@
826 898 BasicConfig hhz =new BasicConfig();
827 899 hhz.setName("红色-黄色-紫色");
828 900 hhz.setpId("fb43fd5a-b153-4cb9-9180-c46f5612ba43");
829   - hhz.setLevel("3");
  901 + hhz.setLevel("2");
830 902 hhz.setId("eb146c03-b19f-4e28-b85f-fda574b2283b,315107bd-91fe-42a1-9237-752f3c046a40,224b2329-cb82-4da3-a071-8527f8283aab");
831 903 basicConfigList.add(hhz);
832 904 BasicConfig hch =new BasicConfig();
833 905 hch.setName("红色-橙色-黄色");
834 906 hch.setpId("fb43fd5a-b153-4cb9-9180-c46f5612ba43");
835   - hch.setLevel("3");
  907 + hch.setLevel("2");
836 908 hch.setId("eb146c03-b19f-4e28-b85f-fda574b2283b,49a36aea-c5b6-4162-87d2-9eb3c6ec00c2,315107bd-91fe-42a1-9237-752f3c046a40");
837 909 basicConfigList.add(hch);
838 910 BasicConfig hchz =new BasicConfig();
839 911 hchz.setName("红色-橙色-黄色-紫色");
840 912 hchz.setpId("fb43fd5a-b153-4cb9-9180-c46f5612ba43");
841   - hchz.setLevel("3");
  913 + hchz.setLevel("2");
842 914 hchz.setId("eb146c03-b19f-4e28-b85f-fda574b2283b,49a36aea-c5b6-4162-87d2-9eb3c6ec00c2,315107bd-91fe-42a1-9237-752f3c046a40,224b2329-cb82-4da3-a071-8527f8283aab");
843 915 basicConfigList.add(hchz);
844 916 BasicConfig z =new BasicConfig();