Commit b672967646c75b7a6d94fbeee1519915b0a81cb8

Authored by liquanyu
1 parent eed43d64d4
Exists in master and in 1 other branch dev

助产机构报表

Showing 7 changed files with 720 additions and 93 deletions

platform-common/src/main/java/com/lyms/platform/common/utils/ExcelUtil.java View file @ b672967
1 1 package com.lyms.platform.common.utils;
2 2  
3   -import java.io.File;
4   -import java.io.IOException;
5   -import java.io.OutputStream;
  3 +import java.io.*;
6 4 import java.util.*;
7 5  
8 6  
9 7  
10 8  
11 9  
... ... @@ -237,13 +235,17 @@
237 235 }
238 236  
239 237  
240   - public static void readExclFile(String filePath)
  238 + public static void writeExclFile(String filePath,OutputStream out)
241 239 {
  240 +
242 241 File file = new File(filePath);
  242 + InputStream in = null;
243 243 Workbook wb = null;
244 244 try {
245   - wb = Workbook.getWorkbook(file);
246   - WritableWorkbook book = wb.createWorkbook(file, wb);
  245 + in = new FileInputStream(file);
  246 + wb = Workbook.getWorkbook(in);
  247 +
  248 + WritableWorkbook book = wb.createWorkbook(out,wb);
247 249 WritableSheet ws = book.getSheet(0);
248 250 List<Integer> columNames = new ArrayList<>();
249 251  
... ... @@ -342,9 +344,9 @@
342 344  
343 345 }
344 346  
345   - public static void main(String[] args) {
346   - ExcelUtil.readExclFile("F:\\需求文档\\my.xls");
347   - }
  347 + // public static void main(String[] args) {
  348 +// ExcelUtil.writeExclFile("F:\\需求文档\\my.xls");
  349 +// }
348 350  
349 351 }
platform-dal/src/main/java/com/lyms/platform/query/BabyModelQuery.java View file @ b672967
... ... @@ -176,6 +176,17 @@
176 176 private Date createdTimeStart;
177 177 private Date createdTimeEnd;
178 178  
  179 + //是否畸形 0非畸形 1畸形
  180 + private Integer malformation;
  181 +
  182 + public Integer getMalformation() {
  183 + return malformation;
  184 + }
  185 +
  186 + public void setMalformation(Integer malformation) {
  187 + this.malformation = malformation;
  188 + }
  189 +
179 190 public Date getCreatedTimeEnd() {
180 191 return createdTimeEnd;
181 192 }
... ... @@ -653,6 +664,9 @@
653 664 }
654 665 if (null != source) {
655 666 condition = condition.and("source", source, MongoOper.IS);
  667 + }
  668 + if (null != malformation) {
  669 + condition = condition.and("malformation", malformation, MongoOper.IS);
656 670 }
657 671 List<MongoCondition> mongoCondits = new ArrayList<>();
658 672  
platform-dal/src/main/java/com/lyms/platform/query/MatDeliverQuery.java View file @ b672967
... ... @@ -90,7 +90,21 @@
90 90 private String matFollowId;
91 91  
92 92  
  93 + private String pregnancyOut;
93 94  
  95 + private List<String> pregnancyOuts;
  96 +
  97 + //台数
  98 + private Integer tireNumber;
  99 +
  100 + //会阴情况
  101 + private String perinealCondition;
  102 + //撕裂等级
  103 + private List<Integer> siLielevels;
  104 +
  105 + //畸形 0非畸形 1畸形
  106 + private Integer deformity;
  107 +
94 108 @Override
95 109 public MongoQuery convertToQuery() {
96 110 MongoCondition condition = MongoCondition.newInstance();
... ... @@ -101,6 +115,23 @@
101 115 if (CollectionUtils.isNotEmpty(ids)) {
102 116 condition = condition.and("id", ids, MongoOper.IN);
103 117 }
  118 +
  119 + if (CollectionUtils.isNotEmpty(pregnancyOuts)) {
  120 + condition = condition.and("baby.pregnancyOut", pregnancyOuts, MongoOper.IN);
  121 + }
  122 +
  123 + if (tireNumber != null) {
  124 + condition = condition.and("tireNumber", tireNumber, MongoOper.IS);
  125 + }
  126 +
  127 + if (perinealCondition != null) {
  128 + condition = condition.and("perinealCondition", perinealCondition, MongoOper.IS);
  129 + }
  130 +
  131 + if (CollectionUtils.isNotEmpty(siLielevels)) {
  132 + condition = condition.and("siLielevel", siLielevels, MongoOper.IN);
  133 + }
  134 +
104 135 if (null != pid) {
105 136 condition = condition.and("pid", pid, MongoOper.IS);
106 137 }
... ... @@ -115,6 +146,14 @@
115 146 condition = condition.and("fmAge", fmAge, MongoOper.IS);
116 147 }
117 148  
  149 + if (null != pregnancyOut) {
  150 + condition = condition.and("baby.pregnancyOut", pregnancyOut, MongoOper.IS);
  151 + }
  152 +
  153 + if (null != deformity) {
  154 + condition = condition.and("baby.deformity", deformity, MongoOper.IS);
  155 + }
  156 +
118 157 if (hloseBloodType != null) {
119 158 /**
120 159 * 出血量:
... ... @@ -242,6 +281,53 @@
242 281 return condition.toMongoQuery();
243 282 }
244 283  
  284 + public List<String> getPregnancyOuts() {
  285 + return pregnancyOuts;
  286 + }
  287 +
  288 + public void setPregnancyOuts(List<String> pregnancyOuts) {
  289 + this.pregnancyOuts = pregnancyOuts;
  290 + }
  291 +
  292 + public Integer getDeformity() {
  293 + return deformity;
  294 + }
  295 +
  296 + public void setDeformity(Integer deformity) {
  297 + this.deformity = deformity;
  298 + }
  299 +
  300 + public String getPerinealCondition() {
  301 + return perinealCondition;
  302 + }
  303 +
  304 + public void setPerinealCondition(String perinealCondition) {
  305 + this.perinealCondition = perinealCondition;
  306 + }
  307 +
  308 + public List<Integer> getSiLielevels() {
  309 + return siLielevels;
  310 + }
  311 +
  312 + public void setSiLielevels(List<Integer> siLielevels) {
  313 + this.siLielevels = siLielevels;
  314 + }
  315 +
  316 + public Integer getTireNumber() {
  317 + return tireNumber;
  318 + }
  319 +
  320 + public void setTireNumber(Integer tireNumber) {
  321 + this.tireNumber = tireNumber;
  322 + }
  323 +
  324 + public String getPregnancyOut() {
  325 + return pregnancyOut;
  326 + }
  327 +
  328 + public void setPregnancyOut(String pregnancyOut) {
  329 + this.pregnancyOut = pregnancyOut;
  330 + }
245 331  
246 332 public Integer getFmAge() {
247 333 return fmAge;
platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/MatDeliverController.java View file @ b672967
... ... @@ -393,5 +393,53 @@
393 393 LoginContext loginState = (LoginContext) request.getAttribute("loginContext");
394 394 matDeliverFacade.exportChildbearAgeCount(birth, loginState.getId(), hospitalId, proviceId, cityId, areaId, httpServletResponse);
395 395 }
  396 +
  397 +
  398 + /**
  399 + * 助产机构报表
  400 + * @param request
  401 + * @param time
  402 + * @param hospitalId
  403 + * @param proviceId
  404 + * @param cityId
  405 + * @param areaId
  406 + * @param httpServletResponse
  407 + */
  408 + @TokenRequired
  409 + @ResponseBody
  410 + @RequestMapping(value = "getDueOrgCount", method = RequestMethod.GET)
  411 + public BaseObjectResponse getDueOrgCount(HttpServletRequest request,
  412 + @RequestParam(required = false) String time,
  413 + @RequestParam(required = false) String hospitalId,
  414 + @RequestParam(required = false) String proviceId,
  415 + @RequestParam(required = false) String cityId,
  416 + @RequestParam(required = false) String areaId) {
  417 + LoginContext loginState = (LoginContext) request.getAttribute("loginContext");
  418 + return matDeliverFacade.getDueOrgCount(time, loginState.getId(), hospitalId, proviceId, cityId, areaId);
  419 + }
  420 +
  421 +
  422 + /**
  423 + *助产机构报表导出
  424 + * @param request
  425 + * @param hospitalId
  426 + * @param proviceId
  427 + * @param cityId
  428 + * @param areaId
  429 + * @param httpServletResponse
  430 + */
  431 + @TokenRequired
  432 + @ResponseBody
  433 + @RequestMapping(value = "exporDueOrgCount", method = RequestMethod.GET)
  434 + public void exporDueOrgCount(HttpServletRequest request,
  435 + @RequestParam(required = false) String time,
  436 + @RequestParam(required = false) String hospitalId,
  437 + @RequestParam(required = false) String proviceId,
  438 + @RequestParam(required = false) String cityId,
  439 + @RequestParam(required = false) String areaId,
  440 + HttpServletResponse httpServletResponse) {
  441 + LoginContext loginState = (LoginContext) request.getAttribute("loginContext");
  442 + matDeliverFacade.exporDueOrgCount(time, loginState.getId(), hospitalId, proviceId, cityId, areaId, httpServletResponse);
  443 + }
396 444 }
platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/TestController.java View file @ b672967
... ... @@ -159,7 +159,10 @@
159 159 @Autowired
160 160 private CdGwInterface cdGwInterface;
161 161  
  162 + @Autowired
  163 + private MatDeliverFacade matDeliverFacade;
162 164  
  165 +
163 166 static Map<String, String> highRisks = new HashMap<>();
164 167  
165 168 static {
166 169  
... ... @@ -1899,91 +1902,17 @@
1899 1902 }
1900 1903 return "handleSieveTime .....";
1901 1904 }
  1905 +
  1906 + /**
  1907 + * 育龄服务生孩统计 数据处理
  1908 + * @param id
  1909 + * @return
  1910 + */
1902 1911 @RequestMapping(value="/handleChildbearAgeData")
1903 1912 @ResponseBody
1904 1913 public String handleChildbearAgeData(@RequestParam(required = false)final String id) {
1905 1914  
1906   - new Thread(new Runnable() {
1907   - @Override
1908   - public void run() {
1909   - int limt = 1000;
1910   - int page = 1;
1911   - PersonModelQuery personModelQuery = new PersonModelQuery();
1912   - personModelQuery.setYn(YnEnums.YES.getId());
1913   - personModelQuery.setTypes(new Integer[]{1, 3}); //孕妇或者产妇基本信息
1914   - personModelQuery.setNeed("true");
1915   - personModelQuery.setLimit(limt);
1916   - if (StringUtils.isNotEmpty(id))
1917   - {
1918   - personModelQuery.setId(id);
1919   - }
1920   - while (true)
1921   - {
1922   - System.out.println("page======"+page);
1923   - personModelQuery.setPage(page);
1924   -
1925   - List<PersonModel> personModels = personService.queryPersons(personModelQuery,Sort.Direction.DESC, "created");
1926   - if (CollectionUtils.isNotEmpty(personModels))
1927   - {
1928   - System.out.println("sss");
1929   - int batchSize = 200;
1930   - int end = 0;
1931   - for (int i = 0; i < personModels.size(); i += batchSize) {
1932   - end = (end + batchSize);
1933   - if (end > personModels.size()) {
1934   - end = personModels.size();
1935   - }
1936   - System.out.println("start:" + i + ",end:" + end);
1937   - final List<PersonModel> tempList = personModels.subList(i, end);
1938   - commonThreadPool.execute(new Runnable() {
1939   - @Override
1940   - public void run() {
1941   - if (CollectionUtils.isNotEmpty(tempList)) {
1942   - for (PersonModel person : tempList) {
1943   - MatDeliverQuery matDeliverQuery = new MatDeliverQuery();
1944   - matDeliverQuery.setYn(YnEnums.YES.getId());
1945   - matDeliverQuery.setPid(person.getId());
1946   - List<MaternalDeliverModel> maternalDeliverModels = matDeliverService.query(matDeliverQuery,Sort.Direction.ASC,"created");
1947   - if (CollectionUtils.isNotEmpty(maternalDeliverModels))
1948   - {
1949   - int upCount = 0;
1950   - for(int i = 0 ; i < maternalDeliverModels.size() ; i++)
1951   - {
1952   - MaternalDeliverModel model = maternalDeliverModels.get(i);
1953   - List<MaternalDeliverModel.Baby> babyList = model.getBaby();
1954   -
1955   - List<Integer> fmChildTimes = new ArrayList<Integer>();
1956   - if (CollectionUtils.isNotEmpty(babyList))
1957   - {
1958   - for (int j = 0;j < babyList.size();j++)
1959   - {
1960   - upCount+=1;
1961   - fmChildTimes.add(upCount);
1962   - model.setFmChildTimes(fmChildTimes);
1963   - }
1964   - Patients patients = patientsService.findOnePatientById(model.getParentId());
1965   - if (patients != null)
1966   - {
1967   - model.setFmAge(DateUtil.getAge(patients.getBirth(),model.getDueDate1()));
1968   - }
1969   - }
1970   - matDeliverService.updateOne(model,model.getId());
1971   - }
1972   - }
1973   - }
1974   - }
1975   - }
1976   - });
1977   - }
1978   - }
1979   - else
1980   - {
1981   - break;
1982   - }
1983   - page++;
1984   - }
1985   - }
1986   - }).start();
  1915 + matDeliverFacade.handleMatDeliver(id);
1987 1916  
1988 1917 return "handleChildbearAgeData........";
1989 1918 }
platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/MatDeliverFacade.java View file @ b672967
... ... @@ -16,6 +16,7 @@
16 16 import com.lyms.platform.operate.web.utils.CommonsHelper;
17 17 import com.lyms.platform.operate.web.utils.UnitConstants;
18 18 import com.lyms.platform.operate.web.worker.ChildbearAgeWorker;
  19 +import com.lyms.platform.operate.web.worker.DueOrgCountWorker;
19 20 import com.lyms.platform.operate.web.worker.MaterDeliverWorker;
20 21 import com.lyms.platform.permission.model.Organization;
21 22 import com.lyms.platform.permission.model.OrganizationQuery;
22 23  
... ... @@ -35,10 +36,12 @@
35 36 import org.slf4j.LoggerFactory;
36 37 import org.springframework.beans.factory.annotation.Autowired;
37 38 import org.springframework.beans.factory.annotation.Qualifier;
  39 +import org.springframework.data.domain.Sort;
38 40 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
39 41 import org.springframework.stereotype.Component;
40 42  
41 43 import javax.servlet.http.HttpServletResponse;
  44 +import java.io.IOException;
42 45 import java.text.ParseException;
43 46 import java.text.SimpleDateFormat;
44 47 import java.util.*;
... ... @@ -200,7 +203,7 @@
200 203 deliverAddRequest.setParentId(parentId);
201 204 }
202 205 }
203   -
  206 + Patients patients2 = patientsService.findOnePatientById(deliverAddRequest.getParentId());
204 207 //增加
205 208 if (StringUtils.isEmpty(deliverAddRequest.getId()) && StringUtils.isNotEmpty(deliverAddRequest.getParentId())) {
206 209 MatDeliverQuery matDeliverQuery = new MatDeliverQuery();
... ... @@ -210,7 +213,7 @@
210 213 if (CollectionUtils.isNotEmpty(list2)) {
211 214 return new BaseResponse().setErrormsg("您已分娩").setErrorcode(ErrorCodeConstants.DATA_EXIST);
212 215 }
213   - Patients patients2 = patientsService.findOnePatientById(deliverAddRequest.getParentId());
  216 +
214 217 if (CollectionUtils.isNotEmpty(patients2.getChildExtAddrs())) {
215 218 List<String> childExts = patients2.getChildExtAddrs();
216 219 String extId = childExts.get(childExts.size() - 1);
... ... @@ -363,7 +366,6 @@
363 366  
364 367 MatDeliverQuery matDeliverQuery = new MatDeliverQuery();
365 368 maternalDeliverModel.setOperator(userId);
366   - Patients patients2 = patientsService.findOnePatientById(deliverAddRequest.getParentId());
367 369 matDeliverQuery.setPid(patients2.getPid());
368 370 matDeliverQuery.setYn(YnEnums.YES.getId());
369 371 matDeliverQuery.setDueDate(deliverAddRequest.getDueDate());
370 372  
... ... @@ -460,10 +462,105 @@
460 462 } else {
461 463 return new BaseResponse().setErrorcode(ErrorCodeConstants.NO_DATA).setErrormsg("parentId 为空,找不到产妇");
462 464 }
  465 +
  466 + //育龄服务生孩统计 数据处理
  467 + if (StringUtils.isNotEmpty(patients2.getPid()))
  468 + {
  469 + handleMatDeliver(patients2.getPid());
  470 + }
  471 +
463 472 return new BaseResponse().setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功");
464 473 }
465 474  
466 475  
  476 +
  477 + public void handleMatDeliver(final String pid)
  478 + {
  479 + new Thread(new Runnable() {
  480 + @Override
  481 + public void run() {
  482 + int limt = 1000;
  483 + int page = 1;
  484 + PersonModelQuery personModelQuery = new PersonModelQuery();
  485 + personModelQuery.setYn(YnEnums.YES.getId());
  486 + personModelQuery.setTypes(new Integer[]{1, 3}); //孕妇或者产妇基本信息
  487 + personModelQuery.setNeed("true");
  488 + personModelQuery.setLimit(limt);
  489 + if (StringUtils.isNotEmpty(pid))
  490 + {
  491 + personModelQuery.setId(pid);
  492 + }
  493 + while (true)
  494 + {
  495 + System.out.println("page======"+page);
  496 + personModelQuery.setPage(page);
  497 +
  498 + List<PersonModel> personModels = personService.queryPersons(personModelQuery, Sort.Direction.DESC, "created");
  499 + if (CollectionUtils.isNotEmpty(personModels))
  500 + {
  501 + System.out.println("sss");
  502 + int batchSize = 200;
  503 + int end = 0;
  504 + for (int i = 0; i < personModels.size(); i += batchSize) {
  505 + end = (end + batchSize);
  506 + if (end > personModels.size()) {
  507 + end = personModels.size();
  508 + }
  509 + System.out.println("start:" + i + ",end:" + end);
  510 + final List<PersonModel> tempList = personModels.subList(i, end);
  511 + commonThreadPool.execute(new Runnable() {
  512 + @Override
  513 + public void run() {
  514 + if (CollectionUtils.isNotEmpty(tempList)) {
  515 + for (PersonModel person : tempList) {
  516 + MatDeliverQuery matDeliverQuery = new MatDeliverQuery();
  517 + matDeliverQuery.setYn(YnEnums.YES.getId());
  518 + matDeliverQuery.setPid(person.getId());
  519 + List<MaternalDeliverModel> maternalDeliverModels = matDeliverService.query(matDeliverQuery,Sort.Direction.ASC,"created");
  520 + if (CollectionUtils.isNotEmpty(maternalDeliverModels))
  521 + {
  522 + int upCount = 0;
  523 + for(int i = 0 ; i < maternalDeliverModels.size() ; i++)
  524 + {
  525 + MaternalDeliverModel model = maternalDeliverModels.get(i);
  526 + List<MaternalDeliverModel.Baby> babyList = model.getBaby();
  527 +
  528 + List<Integer> fmChildTimes = new ArrayList<Integer>();
  529 + if (CollectionUtils.isNotEmpty(babyList))
  530 + {
  531 + for (int j = 0;j < babyList.size();j++)
  532 + {
  533 + upCount+=1;
  534 + fmChildTimes.add(upCount);
  535 + model.setFmChildTimes(fmChildTimes);
  536 + }
  537 + Patients patients = patientsService.findOnePatientById(model.getParentId());
  538 + if (patients != null)
  539 + {
  540 + model.setFmAge(DateUtil.getAge(patients.getBirth(),model.getDueDate1()));
  541 + }
  542 + }
  543 + matDeliverService.updateOne(model,model.getId());
  544 + }
  545 + }
  546 + }
  547 + }
  548 + }
  549 + });
  550 + }
  551 + }
  552 + else
  553 + {
  554 + break;
  555 + }
  556 + page++;
  557 + }
  558 + }
  559 + }).start();
  560 + }
  561 +
  562 +
  563 +
467 564 /**
468 565 * 分娩添加或更新追访信息
469 566 *
... ... @@ -2504,6 +2601,67 @@
2504 2601 {
2505 2602 ExceptionUtils.catchException(e,"exportChildbearAgeCount error");
2506 2603 }
  2604 + }
  2605 +
  2606 + public void exporDueOrgCount(String time, Integer userId, String hospitalId, String proviceId,
  2607 + String cityId, String areaId, HttpServletResponse httpServletResponse) {
  2608 +
  2609 + try {
  2610 + httpServletResponse.setContentType("application/force-download");
  2611 + httpServletResponse.setHeader("Content-Disposition", "attachment;filename=" + new String(("助产机构报表.xls").getBytes("UTF-8"), "ISO-8859-1"));
  2612 + ExcelUtil.writeExclFile("F:\\需求文档\\my.xls", httpServletResponse.getOutputStream());
  2613 + } catch (IOException e) {
  2614 + ExceptionUtils.catchException(e, "exporDueOrgCount error");
  2615 + }
  2616 + }
  2617 +
  2618 + public BaseObjectResponse getDueOrgCount(String time, Integer userId, String hospitalId, String proviceId, String cityId, String areaId) {
  2619 +
  2620 +
  2621 + Map<String,String> params = new HashMap<>();
  2622 + params.put("proviceId",proviceId);
  2623 + params.put("cityId",cityId);
  2624 + params.put("areaId",areaId);
  2625 +
  2626 + List<String> hospitalIds = new ArrayList<>();
  2627 + if (com.lyms.platform.common.utils.StringUtils.isNotEmpty(hospitalId)) {
  2628 + hospitalIds.add(hospitalId);
  2629 + } else {
  2630 + //获取用户拥有的权限医院和条件筛选的医院交集
  2631 + hospitalIds = areaCountFacade.getCurrentUserHospPermissions(userId, proviceId,
  2632 + cityId, areaId);
  2633 + }
  2634 +
  2635 + List<Map<String,String>> list = new ArrayList<>();
  2636 +
  2637 + int batchSize = 5;
  2638 + int end = 0;
  2639 + List<Future> futures = new ArrayList<>();
  2640 + for (int i = 0; i < hospitalIds.size(); i += batchSize) {
  2641 + end = (end + batchSize);
  2642 + if (end > hospitalIds.size()) {
  2643 + end = hospitalIds.size();
  2644 + }
  2645 + List<String> hids = hospitalIds.subList(i, end);
  2646 + Callable c = new DueOrgCountWorker(time,hids,matDeliverService,organizationService,patientsService,babyService,params);
  2647 + Future f = commonThreadPool.submit(c);
  2648 + futures.add(f);
  2649 + }
  2650 +
  2651 + if (CollectionUtils.isNotEmpty(futures)) {
  2652 + for (Future f : futures) {
  2653 + try {
  2654 + list.addAll((List<Map<String,String>>) f.get());
  2655 + } catch (Exception e) {
  2656 + ExceptionUtils.catchException(e, "getChildbearAgeCount list error.");
  2657 + }
  2658 + }
  2659 + }
  2660 +
  2661 +
  2662 +
  2663 +
  2664 + return null;
2507 2665 }
2508 2666 }
platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/DueOrgCountWorker.java View file @ b672967
  1 +package com.lyms.platform.operate.web.worker;
  2 +
  3 +
  4 +import com.lyms.platform.biz.service.BabyService;
  5 +import com.lyms.platform.biz.service.MatDeliverService;
  6 +import com.lyms.platform.biz.service.PatientsService;
  7 +import com.lyms.platform.common.enums.YnEnums;
  8 +import com.lyms.platform.common.utils.DateUtil;
  9 +import com.lyms.platform.common.utils.StringUtils;
  10 +import com.lyms.platform.operate.web.utils.CollectionUtils;
  11 +import com.lyms.platform.operate.web.utils.CommonsHelper;
  12 +import com.lyms.platform.permission.service.OrganizationService;
  13 +import com.lyms.platform.pojo.MaternalDeliverModel;
  14 +import com.lyms.platform.pojo.Patients;
  15 +import com.lyms.platform.query.BabyModelQuery;
  16 +import com.lyms.platform.query.MatDeliverQuery;
  17 +import com.lyms.platform.query.PatientsQuery;
  18 +import org.springframework.data.domain.Sort;
  19 +
  20 +import java.util.ArrayList;
  21 +import java.util.HashMap;
  22 +import java.util.List;
  23 +import java.util.Map;
  24 +import java.util.concurrent.Callable;
  25 +
  26 +/**
  27 + * Created by Administrator on 2018-08-14.
  28 + */
  29 +public class DueOrgCountWorker implements Callable<List<Map<String,String>>> {
  30 +
  31 + private String time;
  32 +
  33 + private List<String> hospitalIds;
  34 + private MatDeliverService matDeliverService;
  35 + private OrganizationService organizationService;
  36 + private BabyService babyService;
  37 +
  38 + private PatientsService patientsService;
  39 +
  40 + private Map<String,String> params;
  41 + public DueOrgCountWorker(String time,
  42 + List<String> hospitalIds,
  43 + MatDeliverService matDeliverService,
  44 + OrganizationService organizationService,
  45 + PatientsService patientsService,
  46 + BabyService babyService,
  47 + Map<String,String> params
  48 + )
  49 + {
  50 + this.time = time;
  51 + this.hospitalIds = hospitalIds;
  52 + this.matDeliverService = matDeliverService;
  53 + this.organizationService = organizationService;
  54 + this.patientsService = patientsService;
  55 + this.babyService = babyService;
  56 + this.params = params;
  57 + }
  58 +
  59 + @Override
  60 + public List<Map<String,String>> call() throws Exception {
  61 +
  62 +
  63 + List<Map<String,String>> list = new ArrayList<>();
  64 + for (String hospialId : hospitalIds)
  65 + {
  66 + Map<String,String> map = new HashMap<>();
  67 +
  68 +
  69 + //机构名称
  70 + String orgName = CommonsHelper.getHospitalName(hospialId,organizationService);
  71 + map.put("orgName", orgName);
  72 +
  73 +
  74 + //产妇数
  75 + MatDeliverQuery matDeliverQuery = new MatDeliverQuery();
  76 + matDeliverQuery.setYn(YnEnums.YES.getId());
  77 + if (StringUtils.isNotEmpty(time))
  78 + {
  79 + matDeliverQuery.setCreatedStart(DateUtil.getSNDate(time)[0]);
  80 + matDeliverQuery.setEndStart(DateUtil.getSNDate(time)[1]);
  81 + }
  82 + matDeliverQuery.setFmHospital(hospialId);
  83 + int chanCount = matDeliverService.count(matDeliverQuery);
  84 + map.put("chanCount", String.valueOf(chanCount));
  85 +
  86 +
  87 +
  88 + //高危孕产妇数
  89 + PatientsQuery patientsQuery = new PatientsQuery();
  90 + patientsQuery.setIsHighRisk(true);
  91 + patientsQuery.setYn(YnEnums.YES.getId());
  92 + if (StringUtils.isNotEmpty(time))
  93 + {
  94 + patientsQuery.setCreatedTimeStart(DateUtil.getSNDate(time)[0]);
  95 + patientsQuery.setCreatedTimeEnd(DateUtil.getSNDate(time)[1]);
  96 + }
  97 + int riskCount = patientsService.queryPatientCount(patientsQuery);
  98 + map.put("riskCount", String.valueOf(riskCount));
  99 +
  100 + //活产数
  101 + BabyModelQuery babyModelQuery = new BabyModelQuery();
  102 + babyModelQuery.setDataStatus(false);
  103 + babyModelQuery.setHospitalId(hospialId);
  104 + if (StringUtils.isNotEmpty(time))
  105 + {
  106 + babyModelQuery.setBuildDateStart(DateUtil.getSNDate(time)[0]);
  107 + babyModelQuery.setBuildDateEnd(DateUtil.getSNDate(time)[1]);
  108 + }
  109 + babyModelQuery.setBuildType(2);
  110 + babyModelQuery.setOrder("birth");
  111 + int huoChanCount = babyService.queryBabyCount(babyModelQuery);
  112 + map.put("huoChanCount", String.valueOf(huoChanCount));
  113 +
  114 + //双胎数
  115 + MatDeliverQuery matDeliverQuery1 = new MatDeliverQuery();
  116 + matDeliverQuery1.setYn(YnEnums.YES.getId());
  117 + if (StringUtils.isNotEmpty(time))
  118 + {
  119 + matDeliverQuery1.setCreatedStart(DateUtil.getSNDate(time)[0]);
  120 + matDeliverQuery1.setEndStart(DateUtil.getSNDate(time)[1]);
  121 + }
  122 + matDeliverQuery1.setTireNumber(2);
  123 + matDeliverQuery1.setFmHospital(hospialId);
  124 + int doubleCount = matDeliverService.count(matDeliverQuery1);
  125 + map.put("doubleCount", String.valueOf(doubleCount));
  126 +
  127 +
  128 + //非自然妊娠双胎
  129 + MatDeliverQuery matDeliverQuery2 = new MatDeliverQuery();
  130 + matDeliverQuery2.setYn(YnEnums.YES.getId());
  131 + if (StringUtils.isNotEmpty(time))
  132 + {
  133 + matDeliverQuery2.setCreatedStart(DateUtil.getSNDate(time)[0]);
  134 + matDeliverQuery2.setEndStart(DateUtil.getSNDate(time)[1]);
  135 + }
  136 + matDeliverQuery2.setTireNumber(2);
  137 + matDeliverQuery2.setDeliveryModeQueryJson("\"fmfs\":\"1\"");
  138 + matDeliverQuery2.setFmHospital(hospialId);
  139 + int fzrDoubleCount = matDeliverService.count(matDeliverQuery2);
  140 + map.put("fzrDoubleCount", String.valueOf(fzrDoubleCount));
  141 +
  142 + //男
  143 + BabyModelQuery babyModelQuery1 = new BabyModelQuery();
  144 + babyModelQuery1.setDataStatus(false);
  145 + babyModelQuery1.setHospitalId(hospialId);
  146 + babyModelQuery1.setBuildType(2);
  147 + if (StringUtils.isNotEmpty(time))
  148 + {
  149 + babyModelQuery1.setBuildDateStart(DateUtil.getSNDate(time)[0]);
  150 + babyModelQuery1.setBuildDateEnd(DateUtil.getSNDate(time)[1]);
  151 + }
  152 + babyModelQuery1.setOrder("birth");
  153 + babyModelQuery1.setSex(1);
  154 + int boyCount = babyService.queryBabyCount(babyModelQuery1);
  155 + map.put("boyCount", String.valueOf(boyCount));
  156 +
  157 +
  158 + //女
  159 + BabyModelQuery babyModelQuery2 = new BabyModelQuery();
  160 + babyModelQuery2.setDataStatus(false);
  161 + babyModelQuery2.setHospitalId(hospialId);
  162 +
  163 + if (StringUtils.isNotEmpty(time))
  164 + {
  165 + babyModelQuery2.setBuildDateStart(DateUtil.getSNDate(time)[0]);
  166 + babyModelQuery2.setBuildDateEnd(DateUtil.getSNDate(time)[1]);
  167 + }
  168 +
  169 + babyModelQuery2.setBuildType(2);
  170 + babyModelQuery2.setOrder("birth");
  171 + babyModelQuery2.setSex(0);
  172 + int girlCount = babyService.queryBabyCount(babyModelQuery2);
  173 + map.put("girlCount", String.valueOf(girlCount));
  174 +
  175 + //分娩方式 顺产
  176 + MatDeliverQuery matDeliverQuery4 = new MatDeliverQuery();
  177 + matDeliverQuery4.setYn(YnEnums.YES.getId());
  178 + if (StringUtils.isNotEmpty(time))
  179 + {
  180 + matDeliverQuery4.setCreatedStart(DateUtil.getSNDate(time)[0]);
  181 + matDeliverQuery4.setEndStart(DateUtil.getSNDate(time)[1]);
  182 + }
  183 + matDeliverQuery4.setDeliveryModeQueryJson("\"fmfs\":\"1\"");
  184 + matDeliverQuery4.setFmHospital(hospialId);
  185 + int fmShunChanCount = matDeliverService.count(matDeliverQuery4);
  186 + map.put("fmShunChanCount", String.valueOf(fmShunChanCount));
  187 +
  188 +
  189 + //分娩方式 剖宫产
  190 + MatDeliverQuery matDeliverQuery5 = new MatDeliverQuery();
  191 + matDeliverQuery5.setYn(YnEnums.YES.getId());
  192 + if (StringUtils.isNotEmpty(time))
  193 + {
  194 + matDeliverQuery5.setCreatedStart(DateUtil.getSNDate(time)[0]);
  195 + matDeliverQuery5.setEndStart(DateUtil.getSNDate(time)[1]);
  196 + }
  197 + matDeliverQuery5.setDeliveryModeQueryJson("\"fmfs\":\"2\"");
  198 + matDeliverQuery5.setFmHospital(hospialId);
  199 + int fmPoGongCount = matDeliverService.count(matDeliverQuery5);
  200 + map.put("fmPoGongCount", String.valueOf(fmPoGongCount));
  201 +
  202 + //分娩方式 小计
  203 + map.put("fmCount", String.valueOf(fmPoGongCount+fmShunChanCount));
  204 +
  205 +
  206 + //分娩方式 其他
  207 + map.put("fmOtherCount", "");
  208 +
  209 +
  210 +
  211 + //会阴情况 完好
  212 + MatDeliverQuery matDeliverQuery6 = new MatDeliverQuery();
  213 + matDeliverQuery6.setYn(YnEnums.YES.getId());
  214 + if (StringUtils.isNotEmpty(time))
  215 + {
  216 + matDeliverQuery6.setCreatedStart(DateUtil.getSNDate(time)[0]);
  217 + matDeliverQuery6.setEndStart(DateUtil.getSNDate(time)[1]);
  218 + }
  219 + matDeliverQuery6.setPerinealCondition("full");
  220 + matDeliverQuery6.setFmHospital(hospialId);
  221 + int huiYinFullCount = matDeliverService.count(matDeliverQuery6);
  222 + map.put("huiYinFullCount", String.valueOf(huiYinFullCount));
  223 +
  224 +
  225 + //会阴情况 切开
  226 + MatDeliverQuery matDeliverQuery7 = new MatDeliverQuery();
  227 + matDeliverQuery7.setYn(YnEnums.YES.getId());
  228 + if (StringUtils.isNotEmpty(time))
  229 + {
  230 + matDeliverQuery7.setCreatedStart(DateUtil.getSNDate(time)[0]);
  231 + matDeliverQuery7.setEndStart(DateUtil.getSNDate(time)[1]);
  232 + }
  233 + matDeliverQuery7.setPerinealCondition("split");
  234 + matDeliverQuery7.setFmHospital(hospialId);
  235 + int huiYinSpitCount = matDeliverService.count(matDeliverQuery7);
  236 + map.put("huiYinSpitCount", String.valueOf(huiYinSpitCount));
  237 +
  238 +
  239 + //会阴情况 Ⅰ-Ⅱ°裂伤
  240 + MatDeliverQuery matDeliverQuery8 = new MatDeliverQuery();
  241 + matDeliverQuery8.setYn(YnEnums.YES.getId());
  242 + if (StringUtils.isNotEmpty(time))
  243 + {
  244 + matDeliverQuery8.setCreatedStart(DateUtil.getSNDate(time)[0]);
  245 + matDeliverQuery8.setEndStart(DateUtil.getSNDate(time)[1]);
  246 + }
  247 + List<Integer> levels = new ArrayList<>();
  248 + levels.add(1);
  249 + levels.add(2);
  250 + matDeliverQuery8.setSiLielevels(levels);
  251 + matDeliverQuery8.setFmHospital(hospialId);
  252 + int siLielevelCount = matDeliverService.count(matDeliverQuery8);
  253 + map.put("siLielevelCount", String.valueOf(siLielevelCount));
  254 +
  255 +
  256 + //会阴情况 重度裂伤
  257 + MatDeliverQuery matDeliverQuery9 = new MatDeliverQuery();
  258 + matDeliverQuery9.setYn(YnEnums.YES.getId());
  259 + if (StringUtils.isNotEmpty(time))
  260 + {
  261 + matDeliverQuery9.setCreatedStart(DateUtil.getSNDate(time)[0]);
  262 + matDeliverQuery9.setEndStart(DateUtil.getSNDate(time)[1]);
  263 + }
  264 + List<Integer> levels1 = new ArrayList<>();
  265 + levels1.add(3);
  266 + matDeliverQuery9.setSiLielevels(levels1);
  267 + matDeliverQuery9.setFmHospital(hospialId);
  268 + int siLielevelYzCount = matDeliverService.count(matDeliverQuery9);
  269 + map.put("siLielevelYzCount", String.valueOf(siLielevelYzCount));
  270 +
  271 +
  272 + map.put("huiYingTotalCount", String.valueOf(siLielevelYzCount+huiYinFullCount+siLielevelCount));
  273 +
  274 +
  275 + //出生缺陷数
  276 + BabyModelQuery babyModelQuery3 = new BabyModelQuery();
  277 + babyModelQuery3.setDataStatus(false);
  278 + babyModelQuery3.setHospitalId(hospialId);
  279 + if (StringUtils.isNotEmpty(time))
  280 + {
  281 + babyModelQuery3.setBuildDateStart(DateUtil.getSNDate(time)[0]);
  282 + babyModelQuery3.setBuildDateEnd(DateUtil.getSNDate(time)[1]);
  283 + }
  284 + //0非畸形 1畸形
  285 + babyModelQuery3.setBuildType(2);
  286 + babyModelQuery3.setMalformation(1);
  287 + int queXianBabyCount = babyService.queryBabyCount(babyModelQuery3);
  288 + map.put("queXianBabyCount", String.valueOf(queXianBabyCount));
  289 +
  290 + //新生儿死亡数
  291 + map.put("babySiWangCount", "");
  292 +
  293 +
  294 + //死胎数
  295 + //死产数
  296 + MatDeliverQuery matDeliverQuery10 = new MatDeliverQuery();
  297 + matDeliverQuery10.setYn(YnEnums.YES.getId());
  298 + if (StringUtils.isNotEmpty(time))
  299 + {
  300 + matDeliverQuery10.setCreatedStart(DateUtil.getSNDate(time)[0]);
  301 + matDeliverQuery10.setEndStart(DateUtil.getSNDate(time)[1]);
  302 + }
  303 + List<String> PregnancyOuts = new ArrayList<>();
  304 + PregnancyOuts.add("1");
  305 + PregnancyOuts.add("3");
  306 +
  307 + matDeliverQuery10.setPregnancyOuts(PregnancyOuts);
  308 + matDeliverQuery10.setFmHospital(hospialId);
  309 + int babySiChanCount = 0;
  310 + int babySiTaiCount = 0;
  311 + List<MaternalDeliverModel> babySiWangList = matDeliverService.query(matDeliverQuery10);
  312 + if (CollectionUtils.isNotEmpty(babySiWangList))
  313 + {
  314 + for (MaternalDeliverModel model : babySiWangList)
  315 + {
  316 + List<MaternalDeliverModel.Baby> babies = model.getBaby();
  317 + if (CollectionUtils.isNotEmpty(babies))
  318 + {
  319 + for (MaternalDeliverModel.Baby baby : babies)
  320 + {
  321 + if (baby.getPregnancyOut() != null && "3".equals(baby.getPregnancyOut()) )
  322 + {
  323 + babySiChanCount++;
  324 + }
  325 + else if (baby.getPregnancyOut() != null && "1".equals(baby.getPregnancyOut()))
  326 + {
  327 + babySiTaiCount++;
  328 + }
  329 + }
  330 + }
  331 + }
  332 + }
  333 + babySiWangList.clear();
  334 + map.put("babySiChanCount", String.valueOf(babySiChanCount));
  335 + map.put("babySiTaiCount", String.valueOf(babySiTaiCount));
  336 +
  337 + //巨大儿数
  338 + map.put("bigBoyCount", "");
  339 + //低出生体重数
  340 + map.put("lowWeightCount", "");
  341 +
  342 + //早产儿数
  343 + int zcBabyCount = 0;
  344 + PatientsQuery patientsQuery1 = new PatientsQuery();
  345 + patientsQuery1.setYn(YnEnums.YES.getId());
  346 + if (StringUtils.isNotEmpty(time))
  347 + {
  348 + patientsQuery1.setFmDateStart(DateUtil.getSNDate(time)[0]);
  349 + patientsQuery1.setFmDateEnd(DateUtil.getSNDate(time)[1]);
  350 + }
  351 + patientsQuery1.setFmHospital(hospialId);
  352 + patientsQuery1.setFmWeekStart(0);
  353 + patientsQuery1.setFmWeekEnd(36);
  354 + List<Patients> patientses = patientsService.queryPatient(patientsQuery1);
  355 + if (CollectionUtils.isNotEmpty(patientses))
  356 + {
  357 + List<String> ids = new ArrayList<>();
  358 + for (Patients pat : patientses)
  359 + {
  360 + ids.add(pat.getId());
  361 + }
  362 +
  363 + if (CollectionUtils.isNotEmpty(ids))
  364 + {
  365 + MatDeliverQuery matDeliverQuery11 = new MatDeliverQuery();
  366 + matDeliverQuery11.setYn(YnEnums.YES.getId());
  367 + matDeliverQuery11.setParentIdList(ids);
  368 + List<MaternalDeliverModel> fmList = matDeliverService.query(matDeliverQuery11);
  369 + if (CollectionUtils.isNotEmpty(fmList))
  370 + {
  371 + for (MaternalDeliverModel fm : fmList)
  372 + {
  373 + zcBabyCount+=fm.getBaby().size();
  374 + }
  375 + }
  376 + fmList.clear();
  377 + }
  378 + ids.clear();
  379 + }
  380 + patientses.clear();
  381 +
  382 + map.put("zcBabyCount", String.valueOf(zcBabyCount));
  383 +
  384 +
  385 + list.add(map);
  386 + }
  387 +
  388 + return list;
  389 + }
  390 +}