From 9321e796ab672c4f92769e3941070712e38af0e3 Mon Sep 17 00:00:00 2001 From: jiangjiazhi Date: Tue, 10 Jan 2017 16:14:12 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=86=E5=A8=A9=E4=BD=9C=E5=BA=9F=E4=BA=A7?= =?UTF-8?q?=E6=A3=80=E5=8A=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/biz/dal/impl/AntExRecordDaoImpl.java | 57 ++++++++++++++++++---- .../com/lyms/platform/query/AntExRecordQuery.java | 25 ++++++++-- .../operate/web/facade/AntExRecordFacade.java | 2 +- .../operate/web/result/CjStatisticsResult.java | 17 ++++--- 4 files changed, 78 insertions(+), 23 deletions(-) diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/AntExRecordDaoImpl.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/AntExRecordDaoImpl.java index e15adb0..ece691d 100644 --- a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/AntExRecordDaoImpl.java +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/AntExRecordDaoImpl.java @@ -5,21 +5,17 @@ import com.lyms.platform.common.dao.BaseMongoDAOImpl; import com.lyms.platform.common.dao.operator.MongoCondition; import com.lyms.platform.common.dao.operator.MongoOper; import com.lyms.platform.common.dao.operator.MongoQuery; -import com.lyms.platform.common.utils.StringUtils; import com.lyms.platform.pojo.AntExRecordModel; -import com.lyms.platform.pojo.BabyCheckModel; -import com.lyms.platform.query.AntExRecordQuery; import com.mongodb.DBCollection; import com.mongodb.DBObject; import com.mongodb.MapReduceCommand; import com.mongodb.MapReduceOutput; -import org.springframework.data.mongodb.core.aggregation.Aggregation; -import org.springframework.data.mongodb.core.aggregation.AggregationOperation; -import org.springframework.data.mongodb.core.aggregation.AggregationResults; -import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.stereotype.Repository; -import java.util.*; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; /** * 产检管理接口 @@ -41,7 +37,7 @@ public class AntExRecordDaoImpl extends BaseMongoDAOImpl imple * @return */ public List aggregateOne(MongoQuery mongoQuery){ - AggregationOperation match = Aggregation.match(/*Criteria.where("hospitalId").is(hospitalId)*/mongoQuery.getCriteria()); + /*AggregationOperation match = Aggregation.match(*//*Criteria.where("hospitalId").is(hospitalId)*//*mongoQuery.getCriteria()); String[] str= new String[]{"checkDoctor","pid"}; AggregationOperation group = Aggregation.group(str).count().as("count"); @@ -49,7 +45,48 @@ public class AntExRecordDaoImpl extends BaseMongoDAOImpl imple Aggregation aggregation= Aggregation.newAggregation(match, group); AggregationResults result = mongoTemplate.aggregate(aggregation,"lyms_antexrecord", HashMap.class); - return result.getMappedResults(); + return result.getMappedResults();*/ + + + String map = "function() {\n" + + "\t\temit({checkDoctor:this.checkDoctor}, \n" + + "\t\t{\"data\":[{\"pid\":this.pid}]});\n" + + "\t}"; + String reduce = "function(key, value) {\n" + + "\t\tvar ret = {data:[]};\n" + + "\t\tvar srctermid = {};\n" + + "\t\tfor(var i in value) {\n" + + "\t\t\tvar ia = value[i];\n" + + "\t\t\tfor(var j in ia.data) {\n" + + "\t\t\t\tif(!srctermid[ia.data[j].pid]) {\n" + + "\t\t\t\t\tsrctermid[ia.data[j].pid] = true;\n" + + "\t\t\t\t\tret.data.push(ia.data[j]);\n" + + "\t\t\t\t}\n" + + "\t\t\t}\n" + + "\t\t}\n" + + " return ret;\n" + + "\t}"; + DBCollection collections =this.mongoTemplate.getCollection("lyms_antexrecord"); + MapReduceCommand cmd = new MapReduceCommand(collections, map, reduce, + null, MapReduceCommand.OutputType.INLINE, mongoQuery.convertToMongoQuery().getQueryObject()); + cmd.setFinalize("function(key, values){\n" + + "\t\treturn {count:values.data.length};\n" + + "\t}"); + MapReduceOutput out = collections.mapReduce(cmd); + + List ids = new ArrayList<>(); + + for (DBObject o : out.results()) { + if (o != null && o.get("_id") != null) + { + HashMap map1 =new HashMap<>(); + map1.put("checkDoctor", ((DBObject)o.get("_id")).get("checkDoctor")); + + map1.put("count", (int)Double.parseDouble(((DBObject)o.get("value")).get("count").toString())); + ids.add(map1); + } + } + return ids; } public void batchAddRecord(List list){ diff --git a/platform-dal/src/main/java/com/lyms/platform/query/AntExRecordQuery.java b/platform-dal/src/main/java/com/lyms/platform/query/AntExRecordQuery.java index fbb4517..7d76231 100644 --- a/platform-dal/src/main/java/com/lyms/platform/query/AntExRecordQuery.java +++ b/platform-dal/src/main/java/com/lyms/platform/query/AntExRecordQuery.java @@ -6,6 +6,7 @@ import com.lyms.platform.common.dao.operator.MongoCondition; import com.lyms.platform.common.dao.operator.MongoOper; import com.lyms.platform.common.dao.operator.MongoQuery; import com.lyms.platform.common.utils.StringUtils; +import com.sun.org.apache.xpath.internal.operations.Bool; import org.springframework.data.mongodb.core.query.Criteria; import java.util.Date; @@ -23,6 +24,8 @@ public class AntExRecordQuery extends BaseQuery implements IConvertToNativeQuery private String phone; private String barCode; + private Boolean NeNullCheckDoctor; + /** * 末次月经 */ @@ -67,6 +70,14 @@ public class AntExRecordQuery extends BaseQuery implements IConvertToNativeQuery private String cityId; private String areaId; + public boolean isNeNullCheckDoctor() { + return NeNullCheckDoctor; + } + + public void setNeNullCheckDoctor(boolean neNullCheckDoctor) { + NeNullCheckDoctor = neNullCheckDoctor; + } + public String getProvinceRegisterId() { return provinceRegisterId; } @@ -357,6 +368,10 @@ public class AntExRecordQuery extends BaseQuery implements IConvertToNativeQuery if (null != name) { condition = condition.and("name", name, MongoOper.IS); } + if (null != NeNullCheckDoctor) { + condition = condition.and("checkDoctor", null, MongoOper.NE); + } + if (StringUtils.isNotEmpty(levelId)) { condition = condition.and("hLevel", levelId, MongoOper.IN); } @@ -377,20 +392,20 @@ public class AntExRecordQuery extends BaseQuery implements IConvertToNativeQuery if (StringUtils.isNotEmpty(areaId)) { condition = condition.and("areaId", areaId, MongoOper.IS); } - if(StringUtils.isNotEmpty(cityId)){ + if (StringUtils.isNotEmpty(cityId)) { condition = condition.and("cityId", cityId, MongoOper.IS); } - if(StringUtils.isNotEmpty(provinceId)){ + if (StringUtils.isNotEmpty(provinceId)) { condition = condition.and("provinceId", provinceId, MongoOper.IS); } //户籍地 - if(StringUtils.isNotEmpty(provinceRegisterId)){ + if (StringUtils.isNotEmpty(provinceRegisterId)) { condition = condition.and("provinceRegisterId", provinceRegisterId, MongoOper.IS); } - if(StringUtils.isNotEmpty(cityRegisterId)){ + if (StringUtils.isNotEmpty(cityRegisterId)) { condition = condition.and("cityRegisterId", cityRegisterId, MongoOper.IS); } - if(StringUtils.isNotEmpty(areaRegisterId)){ + if (StringUtils.isNotEmpty(areaRegisterId)) { condition = condition.and("areaRegisterId", areaRegisterId, MongoOper.IS); } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AntExRecordFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AntExRecordFacade.java index 249237f..eac0bff 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AntExRecordFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AntExRecordFacade.java @@ -418,7 +418,7 @@ public class AntExRecordFacade { } } else { // List list = patientsService.aggregateOne(patientsQuery1); - + antExRecordQuery.setNeNullCheckDoctor(true); List list = recordService.aggregateOne(antExRecordQuery); for (HashMap map : list) { CjStatisticsResult cjStatisticsResult = new CjStatisticsResult(); diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/CjStatisticsResult.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/CjStatisticsResult.java index af789e0..5078381 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/CjStatisticsResult.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/CjStatisticsResult.java @@ -5,7 +5,6 @@ import com.lyms.platform.common.utils.StringUtils; import java.util.Comparator; /** - * * 产检统计 * Created by Administrator on 2016/11/28 0028. */ @@ -32,7 +31,7 @@ public class CjStatisticsResult implements Comparator { public String getCount() { - if(null==count){ + if (null == count) { return "0"; } return count; @@ -44,11 +43,15 @@ public class CjStatisticsResult implements Comparator { @Override public int compare(CjStatisticsResult o1, CjStatisticsResult o2) { - if (o1 != null && o2 != null) - { - if (StringUtils.isNotEmpty(o2.getCount()) && StringUtils.isNotEmpty(o1.getCount())) - { - return Integer.parseInt(o2.getCount()) - Integer.parseInt(o1.getCount()); + if (o1 != null && o2 != null) { + if (StringUtils.isNotEmpty(o2.getCount()) && StringUtils.isNotEmpty(o1.getCount())) { + double o1d = Double.parseDouble(o2.getCount()); + double o2d = Double.parseDouble(o1.getCount()); + if (o1d > o2d) { + return 1; + } else if (o1d < o2d) { + return -1; + } } } return 0; -- 1.8.3.1