Commit 2b738aef744ceed2fe62fa2505bfd514f321992b

Authored by wtt
1 parent 2efeb27594

衡水产筛统计

Showing 6 changed files with 504 additions and 4 deletions

platform-dal/src/main/java/com/lyms/platform/query/SieveApplyOrderQuery.java View file @ 2b738ae
... ... @@ -6,6 +6,8 @@
6 6 import com.lyms.platform.common.dao.operator.MongoOper;
7 7 import com.lyms.platform.common.dao.operator.MongoQuery;
8 8  
  9 +import java.util.List;
  10 +
9 11 /**
10 12 * Created by Administrator on 2016/6/15 0015.
11 13 */
... ... @@ -37,6 +39,16 @@
37 39  
38 40 //产筛医院
39 41 private String sieveHospitalId;
  42 + //衡水区域产筛申请统计使用
  43 + private List<String> sieveHospitalIds;
  44 +
  45 + public List<String> getSieveHospitalIds() {
  46 + return sieveHospitalIds;
  47 + }
  48 +
  49 + public void setSieveHospitalIds(List<String> sieveHospitalIds) {
  50 + this.sieveHospitalIds = sieveHospitalIds;
  51 + }
40 52  
41 53 public String getNumber() {
42 54 return number;
platform-dal/src/main/java/com/lyms/platform/query/SieveQuery.java View file @ 2b738ae
... ... @@ -89,6 +89,8 @@
89 89  
90 90 //产筛医院
91 91 private String sieveHospitalId;
  92 + //衡水区域产筛申请统计使用
  93 + private List<String> sieveHospitalIds;
92 94  
93 95 //申请医院
94 96 private String applyHospitalId;
... ... @@ -120,6 +122,14 @@
120 122 private String areaId;
121 123 private String streetId;
122 124  
  125 + public List<String> getSieveHospitalIds() {
  126 + return sieveHospitalIds;
  127 + }
  128 +
  129 + public void setSieveHospitalIds(List<String> sieveHospitalIds) {
  130 + this.sieveHospitalIds = sieveHospitalIds;
  131 + }
  132 +
123 133 public List<String> getLymsSieveIds() {
124 134 return lymsSieveIds;
125 135 }
... ... @@ -421,7 +431,9 @@
421 431 if (null != applyHospitalId) {
422 432 condition = condition.and("applyHospitalId", applyHospitalId, MongoOper.IS);
423 433 }
424   -
  434 + if (null != sieveHospitalIds) {
  435 + condition = condition.and("sieveHospitalId", sieveHospitalIds, MongoOper.IN);
  436 + }
425 437 if (null != parentId) {
426 438 condition = condition.and("parentId", parentId, MongoOper.IS);
427 439 }
... ... @@ -598,6 +610,7 @@
598 610 condition = condition.and("sieveType", sieveType, MongoOper.IS);
599 611 }
600 612 }
  613 +
601 614  
602 615 if (StringUtils.isNotEmpty(costType)) {
603 616 // costType = null/1 免费
platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/SieveController.java View file @ 2b738ae
... ... @@ -256,6 +256,36 @@
256 256 LoginContext loginState = (LoginContext) request.getAttribute("loginContext");
257 257 return sieveFacade.queryList(cqSieveQueryRequest, loginState.getId(), "true", false);
258 258 }
  259 + /**
  260 + * 区域 产筛申请统计
  261 + *
  262 + * @param cqSieveQueryRequest
  263 + * @param request
  264 + * @Author: 武涛涛
  265 + * @Date: 2020/7/16 10:06
  266 + */
  267 + @ResponseBody
  268 + @RequestMapping(value = "/regionalCqsievesList", method = RequestMethod.GET)
  269 + @TokenRequired
  270 + public BaseResponse regionalCqsievesList(@Valid CqSieveQueryRequest cqSieveQueryRequest, HttpServletRequest request) {
  271 + LoginContext loginState = (LoginContext) request.getAttribute("loginContext");
  272 + return sieveFacade.regionalCqsievesList(cqSieveQueryRequest, loginState.getId(), "true", false);
  273 + }
  274 + /**
  275 + * 区域 产筛申请统计导出
  276 + *
  277 + * @param cqSieveQueryRequest
  278 + * @param request
  279 + * @param response
  280 + * @Author: 武涛涛
  281 + * @Date: 2020/7/16 16:08
  282 + */
  283 + @RequestMapping(value = "/exportRegionalCqsievesList", method = RequestMethod.GET)
  284 + @TokenRequired
  285 + public void exportRegionalCqsievesList(@Valid CqSieveQueryRequest cqSieveQueryRequest, HttpServletRequest request, HttpServletResponse response) {
  286 + LoginContext loginState = (LoginContext) request.getAttribute("loginContext");
  287 + sieveFacade.exportRegionalCqsievesList(cqSieveQueryRequest, loginState.getId(), response);
  288 + }
259 289  
260 290  
261 291 /**
platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/SieveFacade.java View file @ 2b738ae
... ... @@ -19,6 +19,7 @@
19 19 import com.lyms.platform.operate.web.service.ITrackDownService;
20 20 import com.lyms.platform.operate.web.utils.CommonsHelper;
21 21 import com.lyms.platform.operate.web.worker.SieveHistory;
  22 +import com.lyms.platform.operate.web.worker.SieveRegionalCqsievesWorker;
22 23 import com.lyms.platform.operate.web.worker.SieveWorker;
23 24 import com.lyms.platform.operate.web.worker.SieveWorker2;
24 25 import com.lyms.platform.permission.model.Organization;
... ... @@ -31,7 +32,6 @@
31 32 import jxl.Cell;
32 33 import jxl.Sheet;
33 34 import jxl.Workbook;
34   -import jxl.read.biff.BiffException;
35 35 import net.sf.json.JSONObject;
36 36 import org.apache.commons.collections.CollectionUtils;
37 37 import org.apache.commons.fileupload.disk.DiskFileItem;
... ... @@ -50,7 +50,9 @@
50 50 import org.springframework.web.multipart.commons.CommonsMultipartFile;
51 51  
52 52 import javax.servlet.http.HttpServletResponse;
53   -import java.io.*;
  53 +import java.io.File;
  54 +import java.io.FileInputStream;
  55 +import java.io.OutputStream;
54 56 import java.text.SimpleDateFormat;
55 57 import java.util.*;
56 58 import java.util.concurrent.Callable;
... ... @@ -612,6 +614,213 @@
612 614 return new BaseListResponse().setData(data).setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功").setPageInfo(sieveQuery.getPageInfo());
613 615 }
614 616  
  617 + /**
  618 + * 区域 产筛申请统计
  619 + *
  620 + * @param cqSieveQueryRequest
  621 + * @param userId
  622 + * @param needPage
  623 + * @param isSieveLagManage
  624 + * @Author: 武涛涛
  625 + * @Date: 2020/7/16 10:10
  626 + */
  627 + public BaseResponse regionalCqsievesList(CqSieveQueryRequest cqSieveQueryRequest, Integer userId, String needPage, boolean isSieveLagManage) {
  628 +
  629 + String hospitalId = autoMatchFacade.getHospitalId(userId);
  630 + List<String> hospitalList = new ArrayList<>();
  631 + if(null!=hospitalId){
  632 + //当前用户本院
  633 + hospitalList.add(hospitalId);
  634 + }
  635 + //查询用户是否有区域权限
  636 + DataPermissionsModelQuery dataPermissionsModelQuery = new DataPermissionsModelQuery();
  637 + dataPermissionsModelQuery.setUserId(userId);
  638 + List<DataPermissionsModel> permissionsModels = dataPermissionService.queryPermission(dataPermissionsModelQuery);
  639 + if (CollectionUtils.isNotEmpty(permissionsModels)) {
  640 + Set<String> set = permissionsModels.get(0).getData().keySet();
  641 + Iterator<String> it = set.iterator();
  642 + while (it.hasNext()) {
  643 + String id = it.next();
  644 + if (com.lyms.platform.common.utils.StringUtils.isNotEmpty(id) && !hospitalList.contains(id)) {
  645 + hospitalList.add(id);
  646 + }
  647 + }
  648 + }
  649 +
  650 + List<SieveListResult> data = new ArrayList<>();
  651 + SieveQuery sieveQuery = new SieveQuery();
  652 + sieveQuery.setQueryNo(cqSieveQueryRequest.getQueryNo());
  653 + sieveQuery.setYn(YnEnums.YES.getId());
  654 + sieveQuery.setPhone(cqSieveQueryRequest.getPhone());
  655 + sieveQuery.setStatus(cqSieveQueryRequest.getStatus());
  656 + sieveQuery.setStatuses(cqSieveQueryRequest.getStatuses());
  657 + sieveQuery.setCqResult(cqSieveQueryRequest.getCqResult());
  658 + sieveQuery.setRenShenResult(cqSieveQueryRequest.getRenShenResult());
  659 + sieveQuery.setName(cqSieveQueryRequest.getName());
  660 + sieveQuery.setCardNo(cqSieveQueryRequest.getCardNo());
  661 +
  662 + if (StringUtils.isNotEmpty(cqSieveQueryRequest.getVcCardNo())) {
  663 + PatientsQuery patientsQuery = new PatientsQuery();
  664 + //patientsQuery.setHospitalId(hospitalId);
  665 + patientsQuery.setHospitalList(hospitalList);
  666 + patientsQuery.setYn(YnEnums.YES.getId());
  667 + patientsQuery.setVcCardNo(cqSieveQueryRequest.getVcCardNo());
  668 + List<Patients> localPatients = patientsService.queryPatient(patientsQuery);
  669 + if (CollectionUtils.isNotEmpty(localPatients)) {
  670 + List<String> ids = new ArrayList<>();
  671 + for (Patients pat : localPatients) {
  672 + ids.add(pat.getId());
  673 + }
  674 + sieveQuery.setParentIds(ids);
  675 + }
  676 + }
  677 +
  678 +
  679 + //省市区查询
  680 + sieveQuery.setProvinceId(cqSieveQueryRequest.getProvinceId());
  681 + sieveQuery.setCityId(cqSieveQueryRequest.getCityId());
  682 + sieveQuery.setAreaId(cqSieveQueryRequest.getAreaId());
  683 + sieveQuery.setStreetId(cqSieveQueryRequest.getStreetId());
  684 +
  685 + if (null != cqSieveQueryRequest.getDueWeekStart()) {
  686 + sieveQuery.setDueWeekStart(7 * Integer.valueOf(cqSieveQueryRequest.getDueWeekStart()));
  687 + }
  688 + if (null != cqSieveQueryRequest.getDueWeekEnd()) {
  689 + sieveQuery.setDueWeekEnd(7 * Integer.valueOf(cqSieveQueryRequest.getDueWeekEnd()) + 6);
  690 + }
  691 + if (null != cqSieveQueryRequest.getcDueWeekStart()) {
  692 + sieveQuery.setLastMensesEnd(DateUtil.addDay(DateUtil.parseYMD(DateUtil.getyyyy_MM_dd(new Date())), -(cqSieveQueryRequest.getcDueWeekStart() * 7)));
  693 + }
  694 + if (null != cqSieveQueryRequest.getcDueWeekEnd()) {
  695 + sieveQuery.setLastMensesStart(DateUtil.addDay(DateUtil.parseYMD(DateUtil.getyyyy_MM_dd(new Date())), -(cqSieveQueryRequest.getcDueWeekEnd() * 7) - 6));
  696 + }
  697 +
  698 + if (StringUtils.isNotEmpty(cqSieveQueryRequest.getApplyTime())) {
  699 + String[] dates = cqSieveQueryRequest.getApplyTime().split(" - ");
  700 +
  701 + sieveQuery.setApplyTimeStart(DateUtil.parseYMD(dates[0]));
  702 + if (dates.length == 2) {
  703 + sieveQuery.setApplyTimeEnd(DateUtil.parseYMDHMS(dates[1] + " 23:59:59"));
  704 + }
  705 + }
  706 +
  707 + if (StringUtils.isNotEmpty(cqSieveQueryRequest.getDiagnosisTime())) {
  708 + String[] dates = cqSieveQueryRequest.getDiagnosisTime().split(" - ");
  709 +
  710 + sieveQuery.setDiagnosisTimeStart(DateUtil.parseYMD(dates[0]));
  711 + if (dates.length == 2) {
  712 + sieveQuery.setDiagnosisTimeEnd(DateUtil.parseYMDHMS(dates[1] + " 23:59:59"));
  713 + }
  714 + }
  715 +
  716 + if (StringUtils.isNotEmpty(cqSieveQueryRequest.getResultTime())) {
  717 + String[] dates = cqSieveQueryRequest.getResultTime().split(" - ");
  718 +
  719 + sieveQuery.setResultTimeStart(DateUtil.parseYMD(dates[0]));
  720 + if (dates.length == 2) {
  721 + sieveQuery.setResultTimeEnd(DateUtil.parseYMDHMS(dates[1] + " 23:59:59"));
  722 + }
  723 + }
  724 + sieveQuery.setZtfx(cqSieveQueryRequest.getZtfx());
  725 + sieveQuery.setStatus(cqSieveQueryRequest.getIsNotify());
  726 + sieveQuery.setPage(cqSieveQueryRequest.getPage());
  727 + sieveQuery.setLimit(cqSieveQueryRequest.getLimit());
  728 +
  729 +
  730 + sieveQuery.setNeed(needPage);
  731 +
  732 +
  733 + if (isSieveLagManage) {
  734 + if (StringUtils.isNotEmpty(cqSieveQueryRequest.getApplyHospitalId())) {//申请医院
  735 + sieveQuery.setApplyHospitalId(cqSieveQueryRequest.getApplyHospitalId());
  736 + }
  737 + //区域统计,当前用户有那个医院就可以查看申请到的医院数据
  738 + sieveQuery.setSieveHospitalIds(hospitalList);
  739 + } else {
  740 + sieveQuery.setHospitalIds(hospitalList);
  741 + }
  742 + List<String> lymsSieveIds = new ArrayList<>();
  743 +
  744 + if (StringUtils.isNotEmpty(cqSieveQueryRequest.getNumber())) {
  745 + List<String> parentIds = new ArrayList<>();
  746 + SieveApplyOrderQuery sieveApplyOrderQuery = new SieveApplyOrderQuery();
  747 + sieveApplyOrderQuery.setSieveHospitalIds(hospitalList);
  748 + sieveApplyOrderQuery.setNumber(cqSieveQueryRequest.getNumber());
  749 + sieveApplyOrderQuery.setYn(YnEnums.YES.getId());
  750 + List<SieveApplyOrderModel> sieveApplyOrderModels = applyOrderService.querySieveApplyOrderWithQuery(sieveApplyOrderQuery);
  751 + if (CollectionUtils.isNotEmpty(sieveApplyOrderModels)) {
  752 + for (SieveApplyOrderModel model : sieveApplyOrderModels) {
  753 + parentIds.add(model.getParentId());
  754 + if (StringUtils.isNotEmpty(model.getLymsSieveId())) {
  755 + lymsSieveIds.add(model.getLymsSieveId());
  756 + }
  757 + }
  758 + }
  759 + if (CollectionUtils.isNotEmpty(lymsSieveIds)) {
  760 + sieveQuery.setLymsSieveIds(lymsSieveIds);//以前产筛表没有这个管理会漏掉,后面修改过就不会,这里有可能会有个问题
  761 + } else if (CollectionUtils.isNotEmpty(parentIds)) {
  762 + sieveQuery.setParentIds(parentIds);
  763 + } else {
  764 + return new BaseListResponse().setData(data).setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功").setPageInfo(sieveQuery.getPageInfo());
  765 + }
  766 + }
  767 +
  768 + // 筛查类型
  769 + String sieveType = cqSieveQueryRequest.getSieveType();
  770 + if (StringUtils.isNotEmpty(sieveType)) {
  771 + if(sieveType.contains(",")){
  772 + sieveType=sieveType.replace(",", "");
  773 + }
  774 + sieveQuery.setSieveType(sieveType);
  775 + }
  776 +
  777 + // 费用类型 ,1
  778 + String costType = cqSieveQueryRequest.getCostType();
  779 + if (StringUtils.isNotEmpty(costType)) {
  780 + if(costType.contains(",")){
  781 + costType=costType.replace(",", "");
  782 + }
  783 + sieveQuery.setCostType(costType);
  784 + }
  785 +
  786 + // 报告类型
  787 + String reportType = cqSieveQueryRequest.getReportType();
  788 + if (StringUtils.isNotEmpty(reportType)) {
  789 + sieveQuery.setReportType(reportType);
  790 + }
  791 +
  792 + //查询产筛list
  793 + List<SieveModel> list = sieveService.queryList1(sieveQuery, "order");
  794 + int batchSize = 4;
  795 + int end = 0;
  796 + List<Future> listFuture = new ArrayList<>();
  797 + for (int i = 0; i < list.size(); i += batchSize) {
  798 + end = (end + batchSize);
  799 + if (end > list.size()) {
  800 + end = list.size();
  801 + }
  802 + listFuture.add(commonThreadPool.submit(new SieveRegionalCqsievesWorker(list.subList(i, end), patientsService,applyOrderService,organizationService,basicConfigService,sieveService)));
  803 + }
  804 + for (Future f : listFuture) {
  805 + try {
  806 + data.addAll((List) f.get(30, TimeUnit.SECONDS));
  807 + } catch (Exception e) {
  808 + ExceptionUtils.catchException(e, "cqSieve list get result Future error.");
  809 + }
  810 + }
  811 + return new BaseListResponse().setData(data).setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功").setPageInfo(sieveQuery.getPageInfo());
  812 + }
  813 +
  814 + /**
  815 + * 产筛导出3.0版 血清学筛查
  816 + *
  817 + * @param cqSieveQueryRequest
  818 + * @param userId
  819 + * @param needPage
  820 + * @param isSieveLagManage
  821 + * @Author: 武涛涛
  822 + * @Date: 2020/7/16 10:07
  823 + */
615 824 public BaseResponse queryList2(CqSieveQueryRequest cqSieveQueryRequest, Integer userId, String needPage, boolean isSieveLagManage) {
616 825 List<SieveListResult2> data = new ArrayList<>();
617 826 SieveQuery sieveQuery = new SieveQuery();
... ... @@ -2756,6 +2965,15 @@
2756 2965 }
2757 2966 }
2758 2967  
  2968 + /**
  2969 + * 产筛导出3.0版 血清学筛查
  2970 + *
  2971 + * @param cqSieveQueryRequest
  2972 + * @param id
  2973 + * @param response
  2974 + * @Author: 武涛涛
  2975 + * @Date: 2020/7/16 10:09
  2976 + */
2759 2977 public void exportSerologySieve(CqSieveQueryRequest cqSieveQueryRequest, Integer id, HttpServletResponse response) {
2760 2978 try {
2761 2979 BaseListResponse listResponse = (BaseListResponse) queryList2(cqSieveQueryRequest, id, null, true);
... ... @@ -2910,6 +3128,65 @@
2910 3128 /* cnames.put("Ethnicity", "Ethnicity");//种族
2911 3129 cnames.put("IdCard", "IdCard");//身份证号*/
2912 3130  
  3131 + }
  3132 + private void cnamesRegionalCqsievesMap(Map<String, String> cnames) {
  3133 + cnames.put("姓名", "姓名");
  3134 + cnames.put("年龄", "年龄");
  3135 + cnames.put("申请时间", "申请时间");
  3136 + cnames.put("申请孕周", "申请孕周");
  3137 + cnames.put("采血时间", "采血时间");
  3138 + cnames.put("申请医院", "申请医院");
  3139 + cnames.put("户籍地", "户籍地");
  3140 + cnames.put("产筛类型", "产筛类型");
  3141 + cnames.put("筛查状态", "筛查状态");
  3142 + cnames.put("收费类型", "收费类型");
  3143 + cnames.put("整体风险", "整体风险");
  3144 + cnames.put("21-三体", "21-三体");
  3145 + cnames.put("18-三体", "18-三体");
  3146 + cnames.put("神经管畸形", "神经管畸形");
  3147 + }
  3148 + public void exportRegionalCqsievesList(CqSieveQueryRequest cqSieveQueryRequest, Integer id, HttpServletResponse response) {
  3149 + try {
  3150 + BaseListResponse listResponse = (BaseListResponse) regionalCqsievesList(cqSieveQueryRequest, id, "true", true);
  3151 +
  3152 + List<SieveListResult> list = listResponse.getData();
  3153 + List<Map<String, Object>> datas = new ArrayList<>();
  3154 +
  3155 + if (CollectionUtils.isNotEmpty(list)) {
  3156 + for (SieveListResult sive : list) {
  3157 + try {
  3158 + Map<String, Object> data = new HashMap<>();
  3159 + data.put("姓名", sive.getName());
  3160 + data.put("年龄", sive.getAge());
  3161 + data.put("申请时间", sive.getApplyTime());
  3162 + data.put("申请孕周", sive.getDueWeek());
  3163 + data.put("采血时间", sive.getCollectionDate());
  3164 + data.put("申请医院", sive.getApplyHospital());
  3165 + data.put("户籍地", sive.getPlaceDomicile());
  3166 + data.put("产筛类型", sive.getSieveTypeStr());
  3167 + data.put("筛查状态", sive.getStatusText());
  3168 + data.put("收费类型", sive.getCostTypeStr());
  3169 + data.put("整体风险", sive.getZtfxText());
  3170 + data.put("21-三体", sive.getTszhz());
  3171 + data.put("18-三体", sive.getSbst());
  3172 + data.put("神经管畸形", sive.getSjgjx());
  3173 + datas.add(data);
  3174 + } catch (Exception e) {
  3175 + e.printStackTrace();
  3176 + continue;
  3177 + }
  3178 + }
  3179 + }
  3180 + OutputStream out = response.getOutputStream();
  3181 + Map<String, String> cnames = new LinkedHashMap<>();
  3182 + cnamesRegionalCqsievesMap(cnames);
  3183 + response.setContentType("application/octet-stream");
  3184 + response.setCharacterEncoding("UTF-8");
  3185 + response.setHeader("Content-Disposition", "attachment;fileName=" + "csdata.xls");
  3186 + ExcelUtil.toExcel(out, datas, cnames);
  3187 + } catch (Exception e) {
  3188 + ExceptionUtils.catchException(e, "产筛统计导出异常");
  3189 + }
2913 3190 }
2914 3191  
2915 3192 /**
platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/SieveListResult.java View file @ 2b738ae
... ... @@ -16,6 +16,10 @@
16 16 public class SieveListResult implements IBasicResultConvert<SieveListResult, SieveModel> {
17 17 public static final String SPIT = "-";
18 18  
  19 + private String sjgjx;// 神经管畸形
  20 + private String sbst;// 18-三体
  21 + private String tszhz;// 21 唐氏综合症
  22 +
19 23 private String id;
20 24 //患者id
21 25 private String parentId;
... ... @@ -157,6 +161,30 @@
157 161 this.exportTime = exportTime;
158 162 }
159 163  
  164 + public String getSjgjx() {
  165 + return sjgjx;
  166 + }
  167 +
  168 + public void setSjgjx(String sjgjx) {
  169 + this.sjgjx = sjgjx;
  170 + }
  171 +
  172 + public String getSbst() {
  173 + return sbst;
  174 + }
  175 +
  176 + public void setSbst(String sbst) {
  177 + this.sbst = sbst;
  178 + }
  179 +
  180 + public String getTszhz() {
  181 + return tszhz;
  182 + }
  183 +
  184 + public void setTszhz(String tszhz) {
  185 + this.tszhz = tszhz;
  186 + }
  187 +
160 188 public String getCardNo() {
161 189 return cardNo;
162 190 }
... ... @@ -575,7 +603,7 @@
575 603 if (null != destModel.getRenShenResult()) {
576 604 setRenShenResult(RenShenJieJu1Enums.getTitle(destModel.getRenShenResult() + ""));
577 605 }
578   - setStatus(destModel.getStatus());
  606 + setStatus(destModel.getStatus());//筛查状态
579 607 setStatusText(SieveStatusEnums.getStrById(destModel.getStatus()));
580 608 setCsRemarkTypeId(destModel.getCsRemarkTypeId());
581 609 if (StringUtils.isNotEmpty(destModel.getCsRemarkTypeId())) {
platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/SieveRegionalCqsievesWorker.java View file @ 2b738ae
  1 +package com.lyms.platform.operate.web.worker;
  2 +
  3 +import com.lyms.platform.biz.service.*;
  4 +import com.lyms.platform.common.enums.SieveEnums;
  5 +import com.lyms.platform.common.enums.SieveStatusEnums;
  6 +import com.lyms.platform.common.enums.YnEnums;
  7 +import com.lyms.platform.common.utils.DateUtil;
  8 +import com.lyms.platform.common.utils.DefenceUtils;
  9 +import com.lyms.platform.operate.web.result.SieveListResult;
  10 +import com.lyms.platform.operate.web.utils.CommonsHelper;
  11 +import com.lyms.platform.permission.model.Organization;
  12 +import com.lyms.platform.permission.service.OrganizationService;
  13 +import com.lyms.platform.permission.service.UsersService;
  14 +import com.lyms.platform.pojo.*;
  15 +import com.lyms.platform.query.*;
  16 +import org.apache.commons.collections.CollectionUtils;
  17 +import org.apache.commons.lang.StringUtils;
  18 +import org.apache.commons.lang.math.NumberUtils;
  19 +import org.springframework.data.domain.Sort;
  20 +import org.springframework.data.mongodb.core.MongoTemplate;
  21 +import org.springframework.data.mongodb.core.query.Criteria;
  22 +import org.springframework.data.mongodb.core.query.Query;
  23 +
  24 +import java.util.*;
  25 +import java.util.concurrent.Callable;
  26 +
  27 +/**
  28 + * 产筛高危统计
  29 + * <p/>
  30 + * Created by Administrator on 2017/3/10 0010.
  31 + */
  32 +public class SieveRegionalCqsievesWorker implements Callable<List<SieveListResult>> {
  33 +
  34 +
  35 + private List<SieveModel> list;
  36 +
  37 + private ApplyOrderService applyOrderService;
  38 +
  39 + private PatientsService patientsService;
  40 +
  41 + private OrganizationService organizationService;
  42 +
  43 + private BasicConfigService basicConfigService;
  44 + private SieveService sieveService;
  45 +
  46 +
  47 + public SieveRegionalCqsievesWorker(List<SieveModel> list,
  48 + PatientsService patientsService, ApplyOrderService applyOrderService,
  49 + OrganizationService organizationService, BasicConfigService basicConfigService,SieveService sieveService) {
  50 + this.list = list;
  51 + this.patientsService = patientsService;
  52 + this.applyOrderService = applyOrderService;
  53 + this.organizationService = organizationService;
  54 + this.basicConfigService = basicConfigService;
  55 + this.sieveService = sieveService;
  56 + }
  57 +
  58 + @Override
  59 + public List<SieveListResult> call() throws Exception {
  60 + List<SieveListResult> results = new ArrayList<>();
  61 +
  62 + for (SieveModel sieveModel : list) {
  63 + SieveListResult sieveListResult = new SieveListResult();
  64 + //申请孕周
  65 + AntExQuery antExQuery = new AntExQuery();
  66 + antExQuery.setYn(YnEnums.YES.getId());
  67 + antExQuery.setHospitalId(sieveModel.getHospitalId());
  68 + antExQuery.setParentId(sieveModel.getParentId());
  69 +
  70 + //获取产筛申请数据
  71 + SieveApplyOrderQuery sieveApplyOrderQuery = new SieveApplyOrderQuery();
  72 + sieveApplyOrderQuery.setSort("created descc");
  73 + sieveApplyOrderQuery.setParentId(sieveModel.getParentId());
  74 + sieveApplyOrderQuery.setHospitalId(sieveModel.getHospitalId());
  75 + sieveApplyOrderQuery.setYn(YnEnums.YES.getId());
  76 + sieveApplyOrderQuery.setLymsSieveId(sieveModel.getId());
  77 +
  78 + //产筛结果
  79 + SieveResultQuery sieveResultQuery = new SieveResultQuery();
  80 + sieveResultQuery.setSort("created descc");
  81 + sieveResultQuery.setParentId(sieveModel.getParentId());
  82 + sieveResultQuery.setYn(YnEnums.YES.getId());
  83 + List<SieveResultModel> resultModels = sieveService.queryListSieveResult(sieveResultQuery);
  84 + if (CollectionUtils.isNotEmpty(resultModels)) {
  85 + SieveResultModel resultModel = resultModels.get(0);
  86 + if(StringUtils.isNotEmpty(resultModel.getTszhz())){
  87 + sieveListResult.setTszhz(SieveEnums.getTitle(Integer.parseInt(resultModel.getTszhz())));//21 -三体
  88 + }
  89 + if(StringUtils.isNotEmpty(resultModel.getSbst())){
  90 + sieveListResult.setSbst(SieveEnums.getTitle(Integer.parseInt(resultModel.getSbst())));// 18-三体
  91 + }
  92 + if(StringUtils.isNotEmpty(resultModel.getSjgjx())){
  93 + sieveListResult.setSjgjx(SieveEnums.getTitle(Integer.parseInt(resultModel.getSjgjx())));// 神经管畸形
  94 + }
  95 + }
  96 + List<SieveApplyOrderModel> applyOrderModels = applyOrderService.querySieveApplyOrderWithQuery(sieveApplyOrderQuery);
  97 + if(CollectionUtils.isEmpty(applyOrderModels)){
  98 + SieveApplyOrderQuery sieveApplyOrderQuery1 = new SieveApplyOrderQuery();
  99 + sieveApplyOrderQuery1.setSort("created descc");
  100 + sieveApplyOrderQuery1.setParentId(sieveModel.getParentId());
  101 + sieveApplyOrderQuery1.setHospitalId(sieveModel.getHospitalId());
  102 + sieveApplyOrderQuery1.setYn(YnEnums.YES.getId());
  103 + applyOrderModels = applyOrderService.querySieveApplyOrderWithQuery(sieveApplyOrderQuery1);
  104 + }
  105 + sieveListResult.setName(sieveModel.getName()); //姓名
  106 + //采血日期
  107 + if (CollectionUtils.isNotEmpty(applyOrderModels)) {
  108 + SieveApplyOrderModel sieveApplyOrderModel = applyOrderModels.get(0);
  109 + //采血日期
  110 + sieveListResult.setCollectionDate(DateUtil.getyyyy_MM_dd(sieveApplyOrderModel.getCollectionDate()));
  111 + }
  112 + Patients patients = patientsService.findOnePatientById(sieveModel.getParentId());
  113 + if (null != patients) {
  114 + sieveListResult.setIsGravida((patients.getType() == 3 && patients.getFmDate() != null) ? "0" : "1");
  115 + if (null != patients.getDueStatus() && 1 == patients.getDueStatus())
  116 + sieveListResult.setcDueWeek("终止妊娠");
  117 + else if (patients.getType() == 3) {
  118 + sieveListResult.setcDueWeek("已分娩");
  119 + }
  120 + //年龄
  121 + sieveListResult.setAge(DateUtil.getAge(patients.getBirth()) + "岁");
  122 + //户籍地
  123 + sieveListResult.setPlaceDomicile(CommonsHelper.getResidence(patients.getProvinceId(), patients.getCityId(),
  124 + patients.getAreaId(), patients.getStreetId(), patients.getAddress(), basicConfigService));
  125 + }
  126 + sieveListResult.setApplyTime(DateUtil.getyyyy_MM_dd(sieveModel.getApplyDate())); //申请时间
  127 + sieveListResult.setDueWeek(com.lyms.platform.common.utils.StringUtils.dueWeek(sieveModel.getDueWeek()));//申请孕周
  128 + if (StringUtils.isNotEmpty(sieveModel.getApplyHospitalId())) {
  129 + Organization organization = organizationService.getOrganization(Integer.parseInt(sieveModel.getApplyHospitalId()));
  130 + sieveListResult.setApplyHospital(organization.getName()); //申请医院
  131 + }
  132 + sieveListResult.setSieveTypeStr(SieveEnums.SieveTypeEnums.getNameById(sieveModel.getSieveType()));//筛查类型 1 血清学筛查 2/无创基因筛查 3/二者都用
  133 + sieveListResult.setStatusText(SieveStatusEnums.getStrById(sieveModel.getStatus()));//产筛状态
  134 + sieveListResult.setCostTypeStr(SieveEnums.CostTypeEnums.getNameById(sieveModel.getCostType())); // 费用类型 1/免费 2/自费
  135 + sieveListResult.setZtfxText(SieveEnums.getTitle(sieveModel.getZtfx()));//整体风险
  136 + results.add(sieveListResult);
  137 + }
  138 + return results;
  139 + }
  140 +}