From ab34eed0b5fdfa4e910f60815e3f1930ad7dd770 Mon Sep 17 00:00:00 2001 From: liquanyu Date: Tue, 14 Aug 2018 17:22:35 +0800 Subject: [PATCH] =?UTF-8?q?=E8=82=B2=E9=BE=84=E6=9C=8D=E5=8A=A1=E7=94=9F?= =?UTF-8?q?=E5=AD=A9=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/lyms/platform/query/MatDeliverQuery.java | 352 +++++++++++---------- .../java/com/lyms/platform/operate/web/Test.java | 19 -- .../web/controller/MatDeliverController.java | 20 +- .../operate/web/facade/MatDeliverFacade.java | 55 ++++ .../operate/web/worker/ChildbearAgeWorker.java | 84 +++++ 5 files changed, 349 insertions(+), 181 deletions(-) create mode 100644 platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/ChildbearAgeWorker.java 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 e5543a8..1785dc5 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 @@ -31,27 +31,13 @@ public class MatDeliverQuery extends BaseQuery implements IConvertToNativeQuery private String hospitalId; private boolean neStart; + private Integer fmAge; - private Date createdTimeStart; - private Date createdTimeEnd; - - public Date getCreatedTimeStart() { - return createdTimeStart; - } - - public void setCreatedTimeStart(Date createdTimeStart) { - this.createdTimeStart = createdTimeStart; - } - - public Date getCreatedTimeEnd() { - return createdTimeEnd; - } - - public void setCreatedTimeEnd(Date createdTimeEnd) { - this.createdTimeEnd = createdTimeEnd; - } + private List fmChildTimes; + private Date createdTimeStart; + private Date createdTimeEnd; private boolean neEnd; @@ -103,6 +89,193 @@ public class MatDeliverQuery extends BaseQuery implements IConvertToNativeQuery */ private String matFollowId; + + + @Override + public MongoQuery convertToQuery() { + MongoCondition condition = MongoCondition.newInstance(); + if (null != id) { + condition = condition.and("id", id, MongoOper.IS); + } + + if (CollectionUtils.isNotEmpty(ids)) { + condition = condition.and("id", ids, MongoOper.IN); + } + if (null != pid) { + condition = condition.and("pid", pid, MongoOper.IS); + } + if (null != vcCardNo) { + condition = condition.and("vcCardNo", vcCardNo, MongoOper.IS); + } + if (null != dueDate) { + condition = condition.and("dueDate", dueDate, MongoOper.IS); + } + + if (null != fmAge) { + condition = condition.and("fmAge", fmAge, MongoOper.IS); + } + + if (hloseBloodType != null) { + /** + * 出血量: + * 顺产:1-产后2小时出血≥300ml、2-产后24小时出血<500ml、3-产后24小时出血≥500ml + * 破宫产:4-产后24小时出血<1000ml、5-产后24小时出血≥2000ml + */ + switch (hloseBloodType) { + case 1: + condition = condition.and("tHloseBloodL", 300, MongoOper.GTE); + break; + case 2: + condition = condition.and("rHloseBloodL", 500, MongoOper.LT); + break; + case 3: + condition = condition.and("rHloseBloodL", 500, MongoOper.GTE); + break; + case 4: + condition = condition.and("rHloseBloodL", 1000, MongoOper.LT); + break; + case 5: + condition = condition.and("rHloseBloodL", 2000, MongoOper.GTE); + break; + } + } + + if (null != cardNo) { + condition = condition.and("cardNo", cardNo, MongoOper.IS); + } + if (null != yn) { + condition = condition.and("yn", yn, MongoOper.IS); + } + if (null != parentId) { + condition = condition.and("parentId", parentId, MongoOper.IS); + } + if (null != parentIdList) { + condition = condition.and("parentId", parentIdList, MongoOper.IN); + } + if (null != deliveryMode) { + condition = condition.and("deliveryMode", deliveryMode, MongoOper.IS); + } + if (null != hospitalId) { + condition = condition.and("hospitalId", hospitalId, MongoOper.IS); + } + if (null != contactResult) { + condition = condition.and("contactResult", contactResult, MongoOper.IS); + } + if (null != makeType) { + condition = condition.and("makeType", makeType, MongoOper.IS); + } + if (null != contactReason) { + condition = condition.and("contactReason", contactReason, MongoOper.IS); + } + if (null != fmChildTimes) { + condition = condition.and("fmChildTimes", fmChildTimes, MongoOper.IN); + } + if (null != visitStatus) { + condition = condition.and("visitStatus", visitStatus, MongoOper.IS); + } + if (null != visitResult) { + condition = condition.and("visitResult", visitResult, MongoOper.IS); + } + if (null != visitAffirm) { + condition = condition.and("visitAffirm", visitAffirm, MongoOper.IS); + } + if (null != matFollowId) { + condition = condition.and("matFollowId", matFollowId, MongoOper.IS); + } + if (CollectionUtils.isNotEmpty(fmHospitalList)) { + if(fsHospital!=null){ + condition.orCondition(MongoCondition.newInstance("fmHospital", fmHospitalList, MongoOper.IN),MongoCondition.newInstance("fsHospital", fsHospital, MongoOper.IS)); + }else { + condition = condition.and("fmHospital", fmHospitalList, MongoOper.IN); + } + } + + if (null != fmHospital) { + if(fsHospital!=null){ + condition.orCondition(MongoCondition.newInstance("fmHospital", fmHospital, MongoOper.IS),MongoCondition.newInstance("fsHospital", fsHospital, MongoOper.IS)); + }else { + condition = condition.and("fmHospital", fmHospital, MongoOper.IS); + } + } + if (null != deliveryModeQueryJson) { + condition = condition.and("deliveryMode", deliveryModeQueryJson, MongoOper.LIKE); + } + Criteria c = null; + + Boolean isAddStart = Boolean.FALSE; + + if (null != createdStart) { + if (neStart) { + c = Criteria.where("dueDate1").gt(createdStart); + } else { + c = Criteria.where("dueDate1").gte(createdStart); + } + isAddStart = Boolean.TRUE; + } + if (null != endStart) { + if (isAddStart) { + if (neEnd) { + c = c.lt(endStart); + } else { + c = c.lte(endStart); + } + } else { + if (neEnd) { + c = Criteria.where("dueDate1").lt(endStart); + } else { + c = Criteria.where("dueDate1").lte(endStart); + } + } + isAddStart = Boolean.TRUE; + } + if(null != createdTimeStart && null != createdTimeEnd){ + if(null != c){ + c = c.where("created").gte(createdTimeStart).lte(createdTimeEnd); + }else{ + c = Criteria.where("created").gte(createdTimeStart).lte(createdTimeEnd); + } + isAddStart = Boolean.TRUE; + } + if (isAddStart) { + return new MongoCondition(c.andOperator(condition.getCriteria())).toMongoQuery(); + } + return condition.toMongoQuery(); + } + + + public Integer getFmAge() { + return fmAge; + } + + public void setFmAge(Integer fmAge) { + this.fmAge = fmAge; + } + + public List getFmChildTimes() { + return fmChildTimes; + } + + public void setFmChildTimes(List fmChildTimes) { + this.fmChildTimes = fmChildTimes; + } + + public Date getCreatedTimeStart() { + return createdTimeStart; + } + + public void setCreatedTimeStart(Date createdTimeStart) { + this.createdTimeStart = createdTimeStart; + } + + public Date getCreatedTimeEnd() { + return createdTimeEnd; + } + + public void setCreatedTimeEnd(Date createdTimeEnd) { + this.createdTimeEnd = createdTimeEnd; + } + + public List getIds() { return ids; } @@ -255,149 +428,6 @@ public class MatDeliverQuery extends BaseQuery implements IConvertToNativeQuery this.pid = pid; } - @Override - public MongoQuery convertToQuery() { - MongoCondition condition = MongoCondition.newInstance(); - if (null != id) { - condition = condition.and("id", id, MongoOper.IS); - } - - if (CollectionUtils.isNotEmpty(ids)) { - condition = condition.and("id", ids, MongoOper.IN); - } - if (null != pid) { - condition = condition.and("pid", pid, MongoOper.IS); - } - if (null != vcCardNo) { - condition = condition.and("vcCardNo", vcCardNo, MongoOper.IS); - } - if (null != dueDate) { - condition = condition.and("dueDate", dueDate, MongoOper.IS); - } - - if (hloseBloodType != null) { - /** - * 出血量: - * 顺产:1-产后2小时出血≥300ml、2-产后24小时出血<500ml、3-产后24小时出血≥500ml - * 破宫产:4-产后24小时出血<1000ml、5-产后24小时出血≥2000ml - */ - switch (hloseBloodType) { - case 1: - condition = condition.and("tHloseBloodL", 300, MongoOper.GTE); - break; - case 2: - condition = condition.and("rHloseBloodL", 500, MongoOper.LT); - break; - case 3: - condition = condition.and("rHloseBloodL", 500, MongoOper.GTE); - break; - case 4: - condition = condition.and("rHloseBloodL", 1000, MongoOper.LT); - break; - case 5: - condition = condition.and("rHloseBloodL", 2000, MongoOper.GTE); - break; - } - } - - if (null != cardNo) { - condition = condition.and("cardNo", cardNo, MongoOper.IS); - } - if (null != yn) { - condition = condition.and("yn", yn, MongoOper.IS); - } - if (null != parentId) { - condition = condition.and("parentId", parentId, MongoOper.IS); - } - if (null != parentIdList) { - condition = condition.and("parentId", parentIdList, MongoOper.IN); - } - if (null != deliveryMode) { - condition = condition.and("deliveryMode", deliveryMode, MongoOper.IS); - } - if (null != hospitalId) { - condition = condition.and("hospitalId", hospitalId, MongoOper.IS); - } - if (null != contactResult) { - condition = condition.and("contactResult", contactResult, MongoOper.IS); - } - if (null != makeType) { - condition = condition.and("makeType", makeType, MongoOper.IS); - } - if (null != contactReason) { - condition = condition.and("contactReason", contactReason, MongoOper.IS); - } - if (null != visitStatus) { - condition = condition.and("visitStatus", visitStatus, MongoOper.IS); - } - if (null != visitResult) { - condition = condition.and("visitResult", visitResult, MongoOper.IS); - } - if (null != visitAffirm) { - condition = condition.and("visitAffirm", visitAffirm, MongoOper.IS); - } - if (null != matFollowId) { - condition = condition.and("matFollowId", matFollowId, MongoOper.IS); - } - if (CollectionUtils.isNotEmpty(fmHospitalList)) { - if(fsHospital!=null){ - condition.orCondition(MongoCondition.newInstance("fmHospital", fmHospitalList, MongoOper.IN),MongoCondition.newInstance("fsHospital", fsHospital, MongoOper.IS)); - }else { - condition = condition.and("fmHospital", fmHospitalList, MongoOper.IN); - } - } - - if (null != fmHospital) { - if(fsHospital!=null){ - condition.orCondition(MongoCondition.newInstance("fmHospital", fmHospital, MongoOper.IS),MongoCondition.newInstance("fsHospital", fsHospital, MongoOper.IS)); - }else { - condition = condition.and("fmHospital", fmHospital, MongoOper.IS); - } - } - if (null != deliveryModeQueryJson) { - condition = condition.and("deliveryMode", deliveryModeQueryJson, MongoOper.LIKE); - } - Criteria c = null; - - Boolean isAddStart = Boolean.FALSE; - - if (null != createdStart) { - if (neStart) { - c = Criteria.where("dueDate1").gt(createdStart); - } else { - c = Criteria.where("dueDate1").gte(createdStart); - } - isAddStart = Boolean.TRUE; - } - if (null != endStart) { - if (isAddStart) { - if (neEnd) { - c = c.lt(endStart); - } else { - c = c.lte(endStart); - } - } else { - if (neEnd) { - c = Criteria.where("dueDate1").lt(endStart); - } else { - c = Criteria.where("dueDate1").lte(endStart); - } - } - isAddStart = Boolean.TRUE; - } - if(null != createdTimeStart && null != createdTimeEnd){ - if(null != c){ - c = c.where("created").gte(createdTimeStart).lte(createdTimeEnd); - }else{ - c = Criteria.where("created").gte(createdTimeStart).lte(createdTimeEnd); - } - isAddStart = Boolean.TRUE; - } - if (isAddStart) { - return new MongoCondition(c.andOperator(condition.getCriteria())).toMongoQuery(); - } - return condition.toMongoQuery(); - } public String getCardNo() { return cardNo; diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/Test.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/Test.java index e95b648..9c1eca2 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/Test.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/Test.java @@ -162,25 +162,6 @@ public class Test { // System.out.println(tzzs); // System.out.println(df.format(tzzs)); - - double kulStart = 1611; - int k1 = ((int)kulStart/100)*100; - double k2 = kulStart - k1; - if (k2 > 50) - { - k1+=100; - } - - if (k1 < 1500) - { - k1 = 1500; - } - else if (k1 > 2800) - { - k1 = 2800; - } - System.out.print(k1); - } public static void configData(BasicConfig bs, List basicConfigList,Map> slaveBasicConfigMap) { 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 207905a..010d8c8 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 @@ -5,6 +5,7 @@ import com.lyms.platform.common.base.BaseController; import com.lyms.platform.common.base.LoginContext; import com.lyms.platform.common.constants.ErrorCodeConstants; import com.lyms.platform.common.result.BaseListResponse; +import com.lyms.platform.common.result.BaseObjectResponse; import com.lyms.platform.common.result.BaseResponse; import com.lyms.platform.common.utils.BeanUtils; import com.lyms.platform.common.utils.ExcelUtil; @@ -354,5 +355,22 @@ public class MatDeliverController extends BaseController{ } } - + /** + * 育龄服务生孩统计 + * @param request + * @param birth + * @return + */ + @TokenRequired + @ResponseBody + @RequestMapping(value = "getChildbearAgeCount", method = RequestMethod.GET) + public BaseObjectResponse getChildbearAgeCount(HttpServletRequest request, + @RequestParam String birth, + @RequestParam String hospitalId, + @RequestParam String proviceId, + @RequestParam String cityId, + @RequestParam String areaId) { + LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); + return matDeliverFacade.getChildbearAgeCount(birth,loginState.getId(),hospitalId,proviceId,cityId,areaId); + } } \ 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 221fce3..427503c 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 @@ -15,6 +15,7 @@ import com.lyms.platform.operate.web.result.*; import com.lyms.platform.operate.web.service.ITrackDownService; import com.lyms.platform.operate.web.utils.CommonsHelper; import com.lyms.platform.operate.web.utils.UnitConstants; +import com.lyms.platform.operate.web.worker.ChildbearAgeWorker; import com.lyms.platform.operate.web.worker.MaterDeliverWorker; import com.lyms.platform.permission.model.Organization; import com.lyms.platform.permission.model.OrganizationQuery; @@ -125,6 +126,9 @@ public class MatDeliverFacade { private static Map babyMap = new HashMap<>(); + @Autowired + private AreaCountFacade areaCountFacade; + static { ONE_ENUMS.put(0, "长"); ONE_ENUMS.put(1, "次"); @@ -2385,4 +2389,55 @@ public class MatDeliverFacade { } + public BaseObjectResponse getChildbearAgeCount(String birth, Integer userId,String hospitalId, + String proviceId,String cityId,String areaId) { + List hospitalIds = new ArrayList<>(); + if (com.lyms.platform.common.utils.StringUtils.isNotEmpty(hospitalId)) { + hospitalIds.add(hospitalId); + } else { + //获取用户拥有的权限医院和条件筛选的医院交集 + hospitalIds = areaCountFacade.getCurrentUserHospPermissions(userId, proviceId, + cityId, areaId); + } + + List> list = new ArrayList<>(); + + //String hospitalId = autoMatchFacade.getHospitalId(userId); + List ages = new ArrayList<>(); + for (int i = 15; i < 16; i ++) + { + ages.add(i); + } + + int batchSize = 5; + int end = 0; + List futures = new ArrayList<>(); + for (int i = 0; i < ages.size(); i += batchSize) { + end = (end + batchSize); + if (end > ages.size()) { + end = ages.size(); + } + List alist = ages.subList(i, end); + Callable c = new ChildbearAgeWorker(birth, + alist,hospitalIds,matDeliverService); + Future f = commonThreadPool.submit(c); + futures.add(f); + } + + if (CollectionUtils.isNotEmpty(futures)) { + for (Future f : futures) { + try { + list.addAll((List>) f.get()); + } catch (Exception e) { + ExceptionUtils.catchException(e, "getChildbearAgeCount list error."); + } + } + } + + BaseObjectResponse objectResponse = new BaseObjectResponse(); + objectResponse.setErrorcode(ErrorCodeConstants.SUCCESS); + objectResponse.setErrormsg("成功"); + objectResponse.setData(list); + return objectResponse; + } } \ No newline at end of file diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/ChildbearAgeWorker.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/ChildbearAgeWorker.java new file mode 100644 index 0000000..0dd46b6 --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/ChildbearAgeWorker.java @@ -0,0 +1,84 @@ +package com.lyms.platform.operate.web.worker; + + +import com.lyms.platform.biz.service.MatDeliverService; +import com.lyms.platform.common.enums.YnEnums; +import com.lyms.platform.common.utils.DateUtil; +import com.lyms.platform.common.utils.StringUtils; +import com.lyms.platform.pojo.MaternalDeliverModel; +import com.lyms.platform.query.MatDeliverQuery; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.Callable; + +/** + * Created by Administrator on 2018-08-14. + */ +public class ChildbearAgeWorker implements Callable>> { + + private String birth; + private List ages; + + private List hospitalIds; + private MatDeliverService matDeliverService; + + public ChildbearAgeWorker(String birth,List ages, + List hospitalIds, + MatDeliverService matDeliverService) + { + this.birth = birth; + this.ages = ages; + this.hospitalIds = hospitalIds; + this.matDeliverService = matDeliverService; + } + + @Override + public List> call() throws Exception { + + List fmChildTimes = new ArrayList<>(); + + List> list = new ArrayList<>(); + + for (Integer fmAge : ages) + { + Map map = new HashMap<>(); + map.put("age", fmAge); + MatDeliverQuery matDeliverQuery = new MatDeliverQuery(); + matDeliverQuery.setYn(YnEnums.YES.getId()); + matDeliverQuery.setFmAge(fmAge); + matDeliverQuery.setFmHospitalList(hospitalIds); + + if (StringUtils.isNotEmpty(birth)) + { + matDeliverQuery.setCreatedStart(DateUtil.getSNDate(birth)[0]); + matDeliverQuery.setEndStart(DateUtil.getSNDate(birth)[1]); + } + + + fmChildTimes.add(1); + matDeliverQuery.setFmChildTimes(fmChildTimes); + int oneCount = matDeliverService.count(matDeliverQuery); + map.put("oneChild", oneCount); + fmChildTimes.clear(); + + + fmChildTimes.add(2); + matDeliverQuery.setFmChildTimes(fmChildTimes); + int twoCount = matDeliverService.count(matDeliverQuery); + fmChildTimes.clear(); + map.put("twoChild", twoCount); + + fmChildTimes.add(3); + matDeliverQuery.setFmChildTimes(fmChildTimes); + int threeCount = matDeliverService.count(matDeliverQuery); + fmChildTimes.clear(); + map.put("threeChild",threeCount); + + list.add(map); + } + return list; + } +} -- 1.8.3.1