From bbbfc5c7b90d3cbb4184d8e9ff2794ddfe5e632d Mon Sep 17 00:00:00 2001 From: jiangjiazhi Date: Sun, 26 Mar 2017 13:22:31 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=A1=A5=E5=8F=91=E4=BA=A7?= =?UTF-8?q?=E6=A3=80=E5=8A=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../biz/dal/impl/PatientTicketIdDaoImpl.java | 17 ++- .../platform/biz/service/AutoIncermentService.java | 4 - .../operate/web/controller/UpdateController.java | 17 ++- .../web/facade/PatientCheckTicketFacade.java | 153 ++++++++++++++++----- 4 files changed, 152 insertions(+), 39 deletions(-) diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/PatientTicketIdDaoImpl.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/PatientTicketIdDaoImpl.java index 238414d..ac1f13f 100644 --- a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/PatientTicketIdDaoImpl.java +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/PatientTicketIdDaoImpl.java @@ -2,9 +2,13 @@ package com.lyms.platform.biz.dal.impl; import com.lyms.platform.biz.dal.PatientTicketIdDao; import com.lyms.platform.common.dao.BaseMongoDAOImpl; +import com.lyms.platform.common.utils.MongoConvertHelper; +import com.lyms.platform.common.utils.ReflectionUtils; import com.lyms.platform.pojo.PatientTicketId; +import com.mongodb.WriteResult; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; +import org.springframework.data.mongodb.core.query.Update; import org.springframework.stereotype.Repository; /** @@ -24,9 +28,16 @@ public class PatientTicketIdDaoImpl extends BaseMongoDAOImpl im save(ticketId); id = 1; } else { - id = ticketId.getTicketId() + 1; - ticketId.setTicketId(id); - update(new Query(Criteria.where("id").is(tableName)),ticketId); + /*id = ticketId.getTicketId() + 1; + ticketId.setTicketId(id); + update(,ticketId);*/ + synchronized (PatientTicketIdDaoImpl.class){ + Update update = new Update(); + update.inc("ticketId", 1); + mongoTemplate.updateMulti(new Query(Criteria.where("_id").is(tableName)), update, "lyms_patient_ticket_id"); + ticketId = findById(tableName); + id = ticketId.getTicketId(); + } } return id; } diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/AutoIncermentService.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/AutoIncermentService.java index 7ec2e2e..f5de59b 100644 --- a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/AutoIncermentService.java +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/AutoIncermentService.java @@ -15,10 +15,6 @@ public class AutoIncermentService { @Autowired private PatientTicketIdDao patientTicketIdDao; - public Integer nextId(Class cls) { - return patientTicketIdDao.nextId(cls.getSimpleName()); - } - public String nextPatientTicketId(String hospital) { Integer id = patientTicketIdDao.nextId(hospital); return String.format("%07d", id); diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/UpdateController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/UpdateController.java index bd38240c..b680f13 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/UpdateController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/UpdateController.java @@ -1,5 +1,6 @@ package com.lyms.platform.operate.web.controller; +import com.lyms.platform.common.annotation.TokenRequired; import com.lyms.platform.common.base.BaseController; import com.lyms.platform.common.constants.ErrorCodeConstants; import com.lyms.platform.common.result.BaseResponse; @@ -31,6 +32,7 @@ public class UpdateController extends BaseController { @Autowired private PatientCheckTicketFacade patientCheckTicketFacade; + @RequestMapping(value = "/updateData", method = RequestMethod.GET) @ResponseBody private Map updateCorrectData(@RequestParam("hId") String hId) { @@ -58,7 +60,20 @@ public class UpdateController extends BaseController { */ @RequestMapping(value = "/supplyCheckTicket", method = RequestMethod.GET) @ResponseBody - private BaseResponse supplyCheckTicket(@RequestParam("hId")String hId){ + private BaseResponse supplyCheckTicket(@RequestParam("hId") String hId) { return patientCheckTicketFacade.supplyCheckTicket(hId); } + + /** + * 补发指定医院的产检劵 + * + * @param parentId + * @return + */ + @TokenRequired + @RequestMapping(value = "/supplyticket", method = RequestMethod.GET) + @ResponseBody + private BaseResponse supplyCheckTicket1(@RequestParam("parentId") String parentId) { + return patientCheckTicketFacade.supplyCheckTicketByPatientId(parentId); + } } \ No newline at end of file diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PatientCheckTicketFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PatientCheckTicketFacade.java index abca956..77c038e 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PatientCheckTicketFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PatientCheckTicketFacade.java @@ -7,6 +7,7 @@ import com.lyms.platform.biz.service.PatientsService; import com.lyms.platform.common.constants.ErrorCodeConstants; import com.lyms.platform.common.enums.YnEnums; import com.lyms.platform.common.result.BaseResponse; +import com.lyms.platform.common.utils.DateUtil; import com.lyms.platform.common.utils.ExceptionUtils; import com.lyms.platform.common.utils.StringUtils; import com.lyms.platform.operate.web.worker.WorkHR; @@ -32,6 +33,17 @@ import java.util.concurrent.Future; /** * 产检劵补发 *

+ * 补发规则: + *

+ * 当前孕周 <= 孕12周+6天 补发1、2、3、4、5券 + * 孕12周+6天 < 当前孕周 <= 孕20周+6天 补发2、3、4、5券 + * 孕20周+6天 < 当前孕周 <= 孕24周+6天 补发3、4、5券 + * 孕24周+6天 < 当前孕周 <= 孕36周+6天 补发4、5券 + * 孕36周+6天 < 当前孕周 <= 孕40周+6天 补发5券 + *

+ *

+ *

+ *

* Created by Administrator on 2017/1/5 0005. */ @Component @@ -41,8 +53,7 @@ public class PatientCheckTicketFacade { private PatientCheckTicketService checkTicketServicel; @Autowired private PatientsService patientsService; - @Autowired - private AutoMatchFacade autoMatchFacade; + @Autowired private AreaCodeService areaCodeService; @@ -65,6 +76,7 @@ public class PatientCheckTicketFacade { patientsQuery1.setHospitalId(hId); patientsQuery1.setYn(YnEnums.YES.getId()); patientsQuery1.setType(1); + patientsQuery1.setExtEnable(false); List buildType = new ArrayList(); buildType.add(0); buildType.add(2); @@ -84,6 +96,46 @@ public class PatientCheckTicketFacade { return new BaseResponse().setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功"); } + /** + * 补发单个建档的产检劵 + * + * @param parentId + * @return + */ + public BaseResponse supplyCheckTicketByPatientId(String parentId) { + + + Patients patients = patientsService.findOnePatientById(parentId); + //表示不是隐藏建档 + PatientsQuery patientsQuery1 = new PatientsQuery(); + patientsQuery1.setYn(YnEnums.YES.getId()); + patientsQuery1.setType(1); + patientsQuery1.setExtEnable(false); + List buildType = new ArrayList(); + buildType.add(0); + buildType.add(2); + patientsQuery1.setBuildTypeList(buildType); + + if (!"2".equals(patients.getEnable())) { + patientsQuery1.setId(parentId); + } else { + patientsQuery1.setPid(patients.getPid()); + } + List patientses = patientsService.queryPatient(patientsQuery1); + if (CollectionUtils.isNotEmpty(patientses)) { + PatientCheckTicketQuery checkTicketQuery = new PatientCheckTicketQuery(); + for (Patients p : patientses) { + checkTicketQuery.setPatientId(p.getId()); + /** + * 执行补发操作 + */ + doBiz(checkTicketQuery, p); + } + } + return new BaseResponse().setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("操作成功."); + } + + private class SupplyCheckTicketThread extends Thread { private List patientses; @@ -97,39 +149,78 @@ public class PatientCheckTicketFacade { for (Patients p : patientses) { try { checkTicketQuery.setPatientId(p.getId()); - if (0 == checkTicketServicel.queryTicketCount(checkTicketQuery)) { - //建档成功后,给孕妇造五个条形码 - Organization organization = organizationService.getOrganization(Integer.valueOf(p.getHospitalId())); - if (null != organization) { - AreaCodeQuery areaCodeQuery = new AreaCodeQuery(); - areaCodeQuery.setAreaId(organization.getCityId()); - areaCodeQuery.setYn(YnEnums.YES.getId() - ); - List code = areaCodeService.queryList(areaCodeQuery); - AreaCodeModel areaCode = null; - if (CollectionUtils.isNotEmpty(code)) { - areaCode = code.get(0); - } - if (null != areaCode&& StringUtils.isNotEmpty(areaCode.getAreaCode())) { - // 建档成功后,给孕妇造五个条形码 - String ticketPid = autoIncermentService.nextPatientTicketId(areaCode.getAreaCode()); - for (Integer i = 1; i <= 5; i++) { - PatientCheckTicket ticket = new PatientCheckTicket(); - ticket.setStatus(1); - ticket.setHospitalId(p.getHospitalId()); - ticket.setPatientId(p.getId()); - ticket.setCreated(new Date()); - ticket.setId(areaCode.getAreaCode() + ticketPid + i); - ticket.setPid(p.getPid()); - checkTicketServicel.addTicket(ticket); - } - } - } - } + /** + * 执行补发操作 + */ + doBiz(checkTicketQuery, p); } catch (Exception e) { ExceptionUtils.catchException(e, "SupplyCheckTicketThread Error."); } } } } + + private void doBiz(PatientCheckTicketQuery checkTicketQuery, Patients p) { + if (0 == checkTicketServicel.queryTicketCount(checkTicketQuery)) { + //建档成功后,给孕妇造五个条形码 + Organization organization = organizationService.getOrganization(Integer.valueOf(p.getHospitalId())); + if (null != organization) { + AreaCodeQuery areaCodeQuery = new AreaCodeQuery(); + areaCodeQuery.setAreaId(organization.getCityId()); + areaCodeQuery.setYn(YnEnums.YES.getId()); + List code = areaCodeService.queryList(areaCodeQuery); + AreaCodeModel areaCode = null; + if (CollectionUtils.isNotEmpty(code)) { + areaCode = code.get(0); + } + if (null != areaCode && StringUtils.isNotEmpty(areaCode.getAreaCode())) { + String ticketPid = null; + int index = 0; + //重试3次获取劵,取不到就失败 + do { + index++; + ticketPid = autoIncermentService.nextPatientTicketId(areaCode.getAreaCode()); + } while (StringUtils.isEmpty(ticketPid) && index < 3); + + if (StringUtils.isEmpty(ticketPid)) { + ExceptionUtils.catchException(null, "补发产检劵失败.id : "+p.getId()); + return; + } + // 建档成功后,给孕妇造五个条形码 + for (Integer i = complyCurrentDay(p.getLastMenses()); i <= 5; i++) { + PatientCheckTicket ticket = new PatientCheckTicket(); + ticket.setStatus(1); + ticket.setHospitalId(p.getHospitalId()); + ticket.setPatientId(p.getId()); + ticket.setCreated(new Date()); + ticket.setId(areaCode.getAreaCode() + ticketPid + i); + ticket.setPid(p.getPid()); + checkTicketServicel.addTicket(ticket); + } + } + } + } + } + + + /** + * 获取当前月经从第几期开始补发 + * + * @param lastMess + * @return + */ + public static int complyCurrentDay(Date lastMess) { + int day = DateUtil.getDays(lastMess, new Date()); + if (day <= 12 * 7 + 6) + return 1; + if (12 * 7 + 6 < day && day <= 20 * 7 + 6) + return 2; + if (20 * 7 + 6 < day && day <= 24 * 7 + 6) + return 3; + if (24 * 7 + 6 < day && day <= 36 * 7 + 6) + return 4; + if (36 * 7 + 6 < day && day <= 40 * 7 + 6) + return 5; + return 6; + } } \ No newline at end of file -- 1.8.3.1