package com.yihu.ehr.svrinspection.controller; import com.fasterxml.jackson.databind.ObjectMapper; import com.yihu.ehr.controller.EnvelopRestEndPoint; import com.yihu.ehr.svrinspection.commons.exception.ManageException; import com.yihu.ehr.svrinspection.model.AssistanceApplyModel; import com.yihu.ehr.svrinspection.service.AssistanceApplyService; import com.yihu.ehr.svrinspection.service.ExamStatisticsService; import com.yihu.ehr.util.rest.Envelop; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.text.ParseException; import java.util.List; import java.util.Map; /** * 机构检验申请控制类 * * @author HZY * @created 2018/11/9 16:23 */ @RequestMapping( "/api/v1.1/exam") @RestController @Api(value = "assistanceApply", description = "区域检验相关接口", tags = {"区域检验"}) public class AssistanceApplyController extends EnvelopRestEndPoint { @Autowired private ObjectMapper objectMapper; @Autowired private AssistanceApplyService assistanceApplyService; @Autowired private ExamStatisticsService examStatisticsService; @GetMapping(value = "/area") @ApiOperation(value = "区域检验-【区域排行】") public Envelop examAreaRanking( @ApiParam(name = "pid", value = "上级区域编码", defaultValue = "361100") @RequestParam(value = "pid", required = false,defaultValue = "361100") Integer pid, @ApiParam(name = "eventDate", value = "就诊时间(年月)",required = true, defaultValue = "") @RequestParam(value = "eventDate", required = false) String eventDate) throws Exception { List> list = examStatisticsService.areaGroupCount(pid,"org_area",eventDate); return success(list); } @GetMapping(value = "/hospital") @ApiOperation(value = "区域检验-【医院排行】") public Envelop examHospitalRanking( @ApiParam(name = "areaCode", value = "区域编码(为空显示全市数据)", defaultValue = "") @RequestParam(value = "areaCode", required = false) String areaCode, @ApiParam(name = "eventDate", value = "就诊时间(年月)", defaultValue = "") @RequestParam(value = "eventDate", required = false) String eventDate) { List> list = null; try { list = examStatisticsService.hospitalGroupCount(areaCode,"org_code",eventDate); } catch (Exception e) { return failed(e.getMessage()); } return success(list); } @GetMapping(value = "/statistics") @ApiOperation(value = "区域检验数-【统计信息】",notes = "包含今日新增量,检验次数业务分布") public Envelop statistics( @ApiParam(name = "areaCode", value = "区域编码(不传默认全市)", defaultValue = "") @RequestParam(value = "areaCode", required = false) String areaCode, @ApiParam(name = "date", value = "日期", defaultValue = "") @RequestParam(value = "date", required = false) String date) throws IOException { Map map = null; try { map = examStatisticsService.areaExamStatistics(areaCode,date); } catch (ManageException e) { return failed(e.getMessage()); } catch (Exception e) { return failed(e.getMessage()); } return success(map); } @GetMapping(value = "/organizations/statistics") @ApiOperation(value = "机构今日检验统计查询-【医生端-头部统计信息】",notes = "医生端的头部统计信息,数据为当日的数据统计") public Envelop orgStatistics( @ApiParam(name = "orgCode", value = "机构编码(不传默认全市)", defaultValue = "") @RequestParam(value = "orgCode", required = false) String orgCode) throws IOException { Map map = null; try { map = examStatisticsService.organizationExamStatistics(orgCode); } catch (ManageException e) { return failed(e.getMessage()); } catch (Exception e) { return failed(e.getMessage()); } return success(map); } @GetMapping(value = "/organizations/basic/statistics") @ApiOperation(value = "机构今日检验统计查询-【基层机构端-头部统计信息】",notes = "基层机构端的头部统计信息,主要包含总检验数,及今日已处理数,今日未处理数") public Envelop basicOrgStatistics( @ApiParam(name = "orgCode", value = "机构编码(不传默认全市)", defaultValue = "") @RequestParam(value = "orgCode", required = false) String orgCode) throws IOException { Map map = null; try { map = examStatisticsService.basicOrgExamStatistics(orgCode); } catch (ManageException e) { return failed(e.getMessage()); } catch (Exception e) { return failed(e.getMessage()); } return success(map); } @GetMapping(value = "/apply/list") @ApiOperation(value = "机构申请/处理列表查询",notes = "filters 的like查询用“?”,") public Envelop applyList( @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段", defaultValue = "") @RequestParam(value = "fields", required = false) String fields, @ApiParam(name = "filters", value = "过滤器,like用?,为空检索所有信息eg:applyOrg=jkzl;createTime>=2018-11-14T18:43:57Z;createTime<2018-11-14T22:59:59Z;", defaultValue = "") @RequestParam(value = "filters", required = false) String filters, @ApiParam(name = "sorts", value = "排序,升序+,降序-(eg:+id)", defaultValue = "+id") @RequestParam(value = "sorts", required = false) String sorts, @ApiParam(name = "size", value = "分页大小", defaultValue = "15") @RequestParam(value = "size", required = false) int size, @ApiParam(name = "page", value = "页码", defaultValue = "1") @RequestParam(value = "page", required = false) int page, HttpServletRequest request, HttpServletResponse response) throws IOException, ParseException { List assistanceApplyModelList = (List)assistanceApplyService.search(fields, filters, sorts, page, size); Envelop envelop = new Envelop(); envelop.setTotalCount((int)assistanceApplyService.getCount(filters)); envelop.setCurrPage(page); envelop.setPageSize(size); envelop.setDetailModelList(assistanceApplyModelList); envelop.setSuccessFlg(true); envelop.setTotalPage(envelop.getTotalPage()); return envelop; // pagedResponse(request, response, assistanceApplyService.getCount(filters), page, size); // return convertToModels(assistanceApplyModelList, new ArrayList(assistanceApplyModelList.size()), AssistanceApplyModel.class, fields); } @GetMapping(value = "/apply/detail") @ApiOperation(value = "下级机构申请详情-查看") public Envelop applyDetail( @ApiParam(name = "applyId", value = "申请记录ID") @RequestParam(value = "applyId", required = false) int applyId) { AssistanceApplyModel applyModel = assistanceApplyService.findById(applyId); return success(applyModel); } @ApiOperation(value = "检验协助申请", response = AssistanceApplyModel.class,produces = MediaType.APPLICATION_JSON_UTF8_VALUE) @PostMapping(value = "apply",consumes = MediaType.APPLICATION_JSON_UTF8_VALUE) public Envelop createAssistanceApply( @ApiParam(name = "apply", value = "档案申请JSON结构",required = true) @RequestBody(required = true) AssistanceApplyModel apply) { AssistanceApplyModel save = null; try { save = assistanceApplyService.saveOrUpdateApply(apply); } catch (ManageException e) { return failed(e.getMessage()); } return success(save); } @ApiOperation(value = "检验申请处理", response = AssistanceApplyModel.class,produces = MediaType.APPLICATION_JSON_UTF8_VALUE) @PostMapping(value = "apply/solution",consumes = MediaType.APPLICATION_JSON_UTF8_VALUE) public Envelop applySolution ( @ApiParam(name = "applyId", value = "申请记录ID", defaultValue = "") @RequestParam(value = "applyId", required = false) int applyId, @ApiParam(name = "replyUserId", value = "处理人ID", defaultValue = "") @RequestParam(value = "replyUserId", required = false) String replyUserId, @ApiParam(name = "replyContent", value = "回复内容", defaultValue = "") @RequestParam(value = "replyContent", required = false) String replyContent) { AssistanceApplyModel save = null; try { save = assistanceApplyService.solutionApply(applyId,replyUserId,replyContent); } catch (ManageException e) { return failed(e.getMessage()); } return success(save); } @ApiOperation(value = "检验申请撤回", response = AssistanceApplyModel.class) @PostMapping(value = "apply/retract",consumes = MediaType.APPLICATION_JSON_UTF8_VALUE) public Envelop applyRetract ( @ApiParam(name = "applyId", value = "申请记录ID", defaultValue = "") @RequestParam(value = "applyId", required = false) int applyId) { AssistanceApplyModel save = null; try { save = assistanceApplyService.retractApply(applyId,-1); } catch (ManageException e) { return failed(e.getMessage()); } return success(save); } }