diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/CancerScreeningController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/CancerScreeningController.java index e406c41..016ec3f 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/CancerScreeningController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/CancerScreeningController.java @@ -260,4 +260,12 @@ public class CancerScreeningController extends BaseController { LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); return cancerScreenService.setCancerExamineStatus(position,id, loginState.getId()); } + + @ResponseBody + @RequestMapping(method = RequestMethod.GET,value = "/exportCancerDatas") + @TokenRequired + public void exportCancerDatas(CancerExamineRequest cancerExamineRequest, HttpServletRequest request,HttpServletResponse response) { + LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); + cancerScreenService.exportCancerDatas(cancerExamineRequest, loginState.getId(),response); + } } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/CancerScreeningFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/CancerScreeningFacade.java index c69cd71..e35103a 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/CancerScreeningFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/CancerScreeningFacade.java @@ -14,7 +14,9 @@ import com.lyms.platform.common.utils.*; import com.lyms.platform.operate.web.request.BreastAfterVisitRequest; import com.lyms.platform.operate.web.request.CancerExamineRequest; import com.lyms.platform.operate.web.request.CancerScreeningRequest; +import com.lyms.platform.operate.web.request.CervicalCancerListRequest; import com.lyms.platform.operate.web.result.CancerScreeningResult; +import com.lyms.platform.operate.web.service.impl.CervicalCancerServiceImpl; import com.lyms.platform.operate.web.utils.CommonsHelper; import com.lyms.platform.operate.web.utils.FunvCommonUtil; import com.lyms.platform.operate.web.utils.ResponseUtil; @@ -44,6 +46,8 @@ import scala.Int; import scala.util.parsing.combinator.testing.Str; import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.OutputStream; import java.lang.reflect.Array; import java.util.*; @@ -70,6 +74,8 @@ public class CancerScreeningFacade { private BreastAfterVisitService breastAfterVisitService; @Autowired private MongoTemplate mongoTemplate; + @Autowired + private CervicalCancerServiceImpl cervicalCancerService; /** * 获取当前医院或院组内的两癌检查列表 @@ -1195,4 +1201,202 @@ public class CancerScreeningFacade { mongoTemplate.updateFirst(Query.query(Criteria.where("id").is(cancerExamineModel.getId())), update, CancerExamineModel.class); return new BaseResponse().setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功"); } + + public void exportCancerDatas(CancerExamineRequest request, Integer userId,HttpServletResponse response) { + String hospitalId = autoMatchFacade.getHospitalId(userId); + Organization organization = organizationService.getOrganization(Integer.parseInt(hospitalId)); + Query query = new Query(); + if (request.getPosition() == 1) + { + Criteria c = Criteria.where("hospitalId").is(hospitalId); + query.addCriteria(c); + } + else if (request.getPosition() == 2) + { + Criteria c = Criteria.where("areaId").is(organization.getAreaId()); + query.addCriteria(c); + if (request.getPosition() != null) + { + Criteria c1 = Criteria.where("position").is(request.getPosition()); + query.addCriteria(c1); + } + } + else if (request.getPosition() == 3) + { + Criteria c = Criteria.where("cityId").is(organization.getCityId()); + query.addCriteria(c); + if (request.getPosition() != null) + { + Criteria c1 = Criteria.where("position").is(request.getPosition()); + query.addCriteria(c1); + } + } + + if (StringUtils.isNotEmpty(request.getOptDate())) { + String[] arrs = request.getOptDate().split(" - "); + Date start = DateUtil.parseYMD(arrs[0]); + Date end = DateUtil.parseYMD(arrs[1]); + end = DateUtil.getDayLastSecond(end); + query.addCriteria(Criteria.where("optDate").gte(start).lte(end)); + } + + if (StringUtils.isNotEmpty(request.getExamineDate())) { + String[] arrs = request.getExamineDate().split(" - "); + Date start = DateUtil.parseYMD(arrs[0]); + Date end = DateUtil.parseYMD(arrs[1]); + end = DateUtil.getDayLastSecond(end); + query.addCriteria(Criteria.where("examineDate").gte(start).lte(end)); + } + + if (request.getStartYear() != null && request.getEndYear() != null) { + query.addCriteria(Criteria.where("year").gte(request.getStartYear()).lte(request.getEndYear())); + } + if (request.getStartQuarter() != null && request.getEndquarter() != null) { + query.addCriteria(Criteria.where("quarter").gte(request.getStartQuarter()).lte(request.getEndquarter())); + } + if (StringUtils.isNotEmpty(request.getOptUser())) + { + Criteria c = Criteria.where("optUser").is(request.getOptUser()); + query.addCriteria(c); + } + + if (StringUtils.isNotEmpty(request.getOptHospital())) + { + Criteria c = Criteria.where("optHospital").is(request.getOptUser()); + query.addCriteria(c); + } + + List > datas = new ArrayList <>(); + Criteria c = Criteria.where("type").is(request.getType()); + query.addCriteria(c); + List list = mongoTemplate.find(query, CancerExamineModel.class); + + if (CollectionUtils.isNotEmpty(list)) + { + for (CancerExamineModel model : list) + { + if (model.getType() == 1) + { + CervicalCancerListRequest cervicalCancerListRequest = new CervicalCancerListRequest(); + cervicalCancerListRequest.setOrgProvinceId(model.getProvinceId()); + cervicalCancerListRequest.setOrgCityId(model.getCityId()); + cervicalCancerListRequest.setOrgAreaId(model.getAreaId()); + cervicalCancerListRequest.setQuarter(model.getQuarter()); + cervicalCancerListRequest.setYear(model.getYear()); + List> data = (List >)cervicalCancerService.queryCervicalCancerCount( cervicalCancerListRequest, userId); + datas.addAll(data); + } + else + { + CancerScreeningRequest cancerScreeningRequest = new CancerScreeningRequest(); + cancerScreeningRequest.setOrgProvinceId(model.getProvinceId()); + cancerScreeningRequest.setOrgCityId(model.getCityId()); + cancerScreeningRequest.setOrgAreaId(model.getAreaId()); + cancerScreeningRequest.setQuarter(model.getQuarter()); + cancerScreeningRequest.setYear(model.getYear()); + List> data = (List >)queryCancerScreeningCount(cancerScreeningRequest,userId).getObject(); + datas.addAll(data); + } + + } + } + try { + OutputStream out = response.getOutputStream(); + Map cnames = new LinkedHashMap <>(); + if (request.getType() == 1) + { + cnames.put("areaName","项目县(区)"); + cnames.put("ndrws","年度任务数"); + cnames.put("jcrs","检查人数"); + cnames.put("jwjcrs","检查人数中既往接受过宫颈癌"); + cnames.put("jars","结案人数"); + cnames.put("zcrs","正常人数"); + cnames.put("bsfjbgrs","报告人数"); + cnames.put("bsfjb2ys","IIB级及以上"); + cnames.put("tbsbgrs","报告人数"); + cnames.put("tbsbdx","不典型鳞状上皮细胞(ASC-US)"); + cnames.put("tbsbcw","不除外高度鳞状上皮内病变(ASC-H)"); + cnames.put("tbsddl","低度鳞状上皮内病变(LSIL)"); + cnames.put("tbsgd","高度鳞状上皮内病变(HSIL)"); + cnames.put("tbslzxb","鳞状细胞癌(SCC)"); + cnames.put("tbsbdxsp","不典型腺上细胞(AGC)"); + cnames.put("tbsbdxgjg","不典型颈管腺细胞倾向瘤变"); + cnames.put("tbsgjgywa","颈管原位癌"); + cnames.put("tbsxa","腺癌"); + cnames.put("rssc","实查"); + cnames.put("rsky","异常/可疑"); + cnames.put("ydjjcyc","应查"); + cnames.put("ydjjcsc","实查"); + cnames.put("ydjjcky","异常/可疑"); + cnames.put("szdgrzs","总人数"); + cnames.put("dcxydy","滴虫性阴道炎"); + cnames.put("wyydjxjmjb","外阴阴道假丝酵母菌病"); + cnames.put("xjxydb","细菌性阴道病"); + cnames.put("wszqjrsy","外生殖器尖锐湿疣"); + cnames.put("nynxgjy","粘液脓性宫颈炎"); + cnames.put("gjxr","宫颈息肉"); + cnames.put("qt","其他"); + cnames.put("zgjl","子宫肌瘤"); + cnames.put("szqt","其他良性疾病"); + cnames.put("zzblyc","应查"); + cnames.put("zzblsc","实查"); + cnames.put("zzbldjbbb","低级别病变(原CIN1)"); + cnames.put("zzblgjb","宫颈病变(原CIN2和CIN3)"); + cnames.put("zzblrwxa","原位腺癌(AIS)"); + cnames.put("zzblwxqra","微小浸润癌"); + cnames.put("zzblqra","浸润癌"); + cnames.put("zzblqt","其他恶性肿瘤"); + cnames.put("sfqk","随访人数"); + cnames.put("bjbb","治疗人数"); + } + else + { + cnames.put("areaName","项目县(区)"); + cnames.put("ndrws","年度任务数"); + cnames.put("jcrs","检查人数"); + cnames.put("jwjcrs","检查人数中既往接受过乳腺癌检查的人数"); + cnames.put("jars","结案人数"); + cnames.put("csscrs","实查人数"); + cnames.put("cs0j","0级"); + cnames.put("cs1j","1级"); + cnames.put("cs2j","2级"); + cnames.put("cs3j","3级"); + cnames.put("cs4j","4级"); + cnames.put("cs5j","5级"); + cnames.put("xxscrs","实查人数"); + cnames.put("xx0j","0级"); + cnames.put("xx1j","1级"); + cnames.put("xx2j","2级"); + cnames.put("xx3j","3级"); + cnames.put("xx4j","4级"); + cnames.put("xx5j","5级"); + cnames.put("rxxl","乳腺纤维腺瘤"); + cnames.put("rxtzl","乳腺导管内乳头状瘤"); + cnames.put("rxqt","其他"); + cnames.put("zzblycrs","应查人数"); + cnames.put("zzblscrs","实查人数"); + cnames.put("zzblbdx","不典型增生"); + cnames.put("zzblxyywa","小叶原位癌"); + cnames.put("zzbldgywa","导管原位癌"); + cnames.put("zzblqrxdga","浸润性导管癌"); + cnames.put("zzblqrxxya","浸润性小叶癌"); + cnames.put("zzblqtzl","其他恶性肿瘤"); + cnames.put("tnmyfqrs","应分期人数"); + cnames.put("tnmhdfqrs","获得分期人数"); + cnames.put("tnm0q","0期"); + cnames.put("tnm1q","I期"); + cnames.put("tnm2aq","IIA期"); + cnames.put("tnm2bq","IIB期"); + cnames.put("tnm3qys","III期及以上"); + cnames.put("sfqksfrs","随访人数"); + cnames.put("sfqkzlrs","治疗人数"); + } + response.setContentType("application/octet-stream"); + response.setCharacterEncoding("UTF-8"); + response.setHeader("Content-Disposition", "attachment;fileName=" + "datas.xls"); + ExcelUtil.toExcel(out, datas, cnames); + } catch (IOException e) { + e.printStackTrace(); + } + } }