From 65bd00542653d2950c153dc99ac88b13ffb0a129 Mon Sep 17 00:00:00 2001 From: hanshaofeng Date: Wed, 28 Dec 2016 16:31:23 +0800 Subject: [PATCH] add bar code process --- .../lyms/platform/biz/BasicConfigServiceTest.java | 15 +++- .../platform/biz/dal/PatientCheckTicketDao.java | 23 ++++++ .../lyms/platform/biz/dal/PatientTicketIdDao.java | 10 +++ .../biz/dal/impl/PatientCheckTicketDaoImpl.java | 42 +++++++++++ .../biz/dal/impl/PatientTicketIdDaoImpl.java | 33 +++++++++ .../platform/biz/service/AutoIncermentService.java | 27 +++++++ .../biz/service/PatientCheckTicketService.java | 76 ++++++++++++++++++++ .../java/com/lyms/platform/beans/SerialIdEnum.java | 2 + .../com/lyms/platform/pojo/PatientCheckTicket.java | 80 +++++++++++++++++++++ .../com/lyms/platform/pojo/PatientTicketId.java | 33 +++++++++ .../platform/query/PatientCheckTicketQuery.java | 82 ++++++++++++++++++++++ .../web/facade/AntenatalExaminationFacade.java | 17 +++++ .../operate/web/facade/BookbuildingFacade.java | 18 +++++ 13 files changed, 457 insertions(+), 1 deletion(-) create mode 100644 platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/PatientCheckTicketDao.java create mode 100644 platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/PatientTicketIdDao.java create mode 100644 platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/PatientCheckTicketDaoImpl.java create mode 100644 platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/PatientTicketIdDaoImpl.java create mode 100644 platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/AutoIncermentService.java create mode 100644 platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/PatientCheckTicketService.java create mode 100644 platform-dal/src/main/java/com/lyms/platform/pojo/PatientCheckTicket.java create mode 100644 platform-dal/src/main/java/com/lyms/platform/pojo/PatientTicketId.java create mode 100644 platform-dal/src/main/java/com/lyms/platform/query/PatientCheckTicketQuery.java diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/BasicConfigServiceTest.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/BasicConfigServiceTest.java index 22d280e..416f498 100644 --- a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/BasicConfigServiceTest.java +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/BasicConfigServiceTest.java @@ -6,6 +6,7 @@ import java.text.SimpleDateFormat; import java.util.*; import java.util.Date; +import com.lyms.platform.biz.dal.PatientTicketIdDao; import com.lyms.platform.biz.dal.impl.YunBookbuildingDaoImpl; import com.lyms.platform.biz.param.AssayConfigQuery; import com.lyms.platform.biz.service.*; @@ -45,7 +46,19 @@ public class BasicConfigServiceTest { // queryRisk(applicationContext); // changeLong2Time(applicationContext); - buildOrgGroup(applicationContext); + findandmodify(applicationContext); + } + + public static void findandmodify(ApplicationContext applicationContext) { + MongoTemplate mongoTemplate + =(MongoTemplate)applicationContext.getBean("mongoTemplate"); + mongoTemplate.getDb().slaveOk(); + mongoTemplate.getDb().authenticate("platform", "platform123".toCharArray()); + PatientTicketIdDao patientTicketIdDao = (PatientTicketIdDao)applicationContext.getBean("patientTicketIdDao"); + System.out.println(patientTicketIdDao.nextId(BasicConfigServiceTest.class.getSimpleName())); + System.out.println(patientTicketIdDao.nextId(BasicConfigServiceTest.class.getSimpleName())); + System.out.println(patientTicketIdDao.nextId(BasicConfigServiceTest.class.getSimpleName())); + System.out.println(patientTicketIdDao.nextId(BasicConfigServiceTest.class.getSimpleName())); } diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/PatientCheckTicketDao.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/PatientCheckTicketDao.java new file mode 100644 index 0000000..af14e83 --- /dev/null +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/PatientCheckTicketDao.java @@ -0,0 +1,23 @@ +package com.lyms.platform.biz.dal; + +import com.lyms.platform.common.dao.operator.MongoQuery; +import com.lyms.platform.pojo.PatientCheckTicket; + +import java.util.List; + +/** + * Created by riecard on 2016/12/28. + */ +public interface PatientCheckTicketDao { + + public PatientCheckTicket addTicket(PatientCheckTicket obj); + + public void updateTicket(PatientCheckTicket obj); + + public PatientCheckTicket getTicket(String id); + + public int queryTicketCount(MongoQuery query); + + public List queryTicket(MongoQuery query); + +} diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/PatientTicketIdDao.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/PatientTicketIdDao.java new file mode 100644 index 0000000..8a7d8d1 --- /dev/null +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/PatientTicketIdDao.java @@ -0,0 +1,10 @@ +package com.lyms.platform.biz.dal; + +/** + * Created by riecard on 2016/12/28. + */ +public interface PatientTicketIdDao { + + public Integer nextId(String tableName); + +} diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/PatientCheckTicketDaoImpl.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/PatientCheckTicketDaoImpl.java new file mode 100644 index 0000000..4c2adc3 --- /dev/null +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/PatientCheckTicketDaoImpl.java @@ -0,0 +1,42 @@ +package com.lyms.platform.biz.dal.impl; + +import com.lyms.platform.biz.dal.PatientCheckTicketDao; +import com.lyms.platform.common.dao.BaseMongoDAOImpl; +import com.lyms.platform.common.dao.operator.MongoCondition; +import com.lyms.platform.common.dao.operator.MongoOper; +import com.lyms.platform.common.dao.operator.MongoQuery; +import com.lyms.platform.pojo.PatientCheckTicket; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * Created by riecard on 2016/12/28. + */ +@Repository("patientCheckTicketDao") +public class PatientCheckTicketDaoImpl extends BaseMongoDAOImpl implements PatientCheckTicketDao { + @Override + public PatientCheckTicket addTicket(PatientCheckTicket obj) { + return save(obj); + } + + @Override + public void updateTicket(PatientCheckTicket obj) { + update(new MongoQuery(new MongoCondition("id", obj.getId(), MongoOper.IS)).convertToMongoQuery(), obj);; + } + + @Override + public PatientCheckTicket getTicket(String id) { + return findById(id); + } + + @Override + public int queryTicketCount(MongoQuery query) { + return (int)count(query.convertToMongoQuery()); + } + + @Override + public List queryTicket(MongoQuery query) { + return find(query.convertToMongoQuery()); + } +} 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 new file mode 100644 index 0000000..238414d --- /dev/null +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/PatientTicketIdDaoImpl.java @@ -0,0 +1,33 @@ +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.pojo.PatientTicketId; +import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.data.mongodb.core.query.Query; +import org.springframework.stereotype.Repository; + +/** + * Created by riecard on 2016/12/28. + */ +@Repository("patientTicketIdDao") +public class PatientTicketIdDaoImpl extends BaseMongoDAOImpl implements PatientTicketIdDao { + + @Override + public Integer nextId(String tableName) { + Integer id = 0; + PatientTicketId ticketId = findById(tableName); + if (ticketId == null) { + ticketId = new PatientTicketId(); + ticketId.setId(tableName); + ticketId.setTicketId(1); + save(ticketId); + id = 1; + } else { + id = ticketId.getTicketId() + 1; + ticketId.setTicketId(id); + update(new Query(Criteria.where("id").is(tableName)),ticketId); + } + 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 new file mode 100644 index 0000000..249d131 --- /dev/null +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/AutoIncermentService.java @@ -0,0 +1,27 @@ +package com.lyms.platform.biz.service; + +import com.lyms.platform.biz.dal.PatientTicketIdDao; +import com.lyms.platform.common.result.BaseModel; +import com.lyms.platform.pojo.Patients; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * Created by riecard on 2016/12/28. + */ +@Service("autoIncermentService") +public class AutoIncermentService { + + @Autowired + private PatientTicketIdDao patientTicketIdDao; + + public Integer nextId(Class cls) { + return patientTicketIdDao.nextId(cls.getSimpleName()); + } + + public String nextPatientTicketId() { + Integer id = patientTicketIdDao.nextId(Patients.class.getSimpleName()); + return String.format("%08d", id); + } + +} diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/PatientCheckTicketService.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/PatientCheckTicketService.java new file mode 100644 index 0000000..b7295aa --- /dev/null +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/PatientCheckTicketService.java @@ -0,0 +1,76 @@ +package com.lyms.platform.biz.service; + +import com.lyms.platform.biz.dal.PatientCheckTicketDao; +import com.lyms.platform.common.dao.operator.MongoQuery; +import com.lyms.platform.pojo.PatientCheckTicket; +import com.lyms.platform.query.PatientCheckTicketQuery; +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Sort; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.List; + +/** + * Created by riecard on 2016/12/28. + */ +@Service +public class PatientCheckTicketService { + + @Autowired + private PatientCheckTicketDao patientCheckTicketDao; + + public PatientCheckTicket addTicket(PatientCheckTicket obj) { + return patientCheckTicketDao.addTicket(obj); + } + + public void updateTicket(PatientCheckTicket obj) { + patientCheckTicketDao.updateTicket(obj);; + } + + public String updateTicket(String id, Integer status, String cousumeHospitalId) { + PatientCheckTicket ticket = getTicket(id); + if (ticket == null) { + return "免费产检券不存在"; + } else if (ticket.getStatus() != 1) { + return "免费产检券已被使用了"; + } + ticket.setStatus(status); + ticket.setConsumeHospitalId(cousumeHospitalId); + ticket.setConsumeDate(new Date()); + updateTicket(ticket); + return null; + } + + public PatientCheckTicket getTicket(String id) { + return patientCheckTicketDao.getTicket(id); + } + + public int queryTicketCount(PatientCheckTicketQuery query) { + return patientCheckTicketDao.queryTicketCount(query.convertToQuery()); + } + + public List queryTicket(PatientCheckTicketQuery ticketQuery) { + MongoQuery query = ticketQuery.convertToQuery(); + if (StringUtils.isNotEmpty(ticketQuery.getNeed())) { + ticketQuery.mysqlBuild(patientCheckTicketDao.queryTicketCount(query)); + query.start(ticketQuery.getOffset()).end(ticketQuery.getLimit()); + } + if(!StringUtils.isEmpty(ticketQuery.getSort())){ + return patientCheckTicketDao.queryTicket(query.addOrder(Sort.Direction.ASC, ticketQuery.getSort())); + } + return patientCheckTicketDao.queryTicket(query.addOrder(Sort.Direction.DESC, "id")); + } + + public List queryTicket(String patientId, String hospitalId,String consumeHospitalId,Integer status) { + PatientCheckTicketQuery query = new PatientCheckTicketQuery(); + query.setNeed(null); + query.setPatientId(patientId); + query.setHospitalId(hospitalId); + query.setConsumeHospitalId(consumeHospitalId); + query.setStatus(status); + return patientCheckTicketDao.queryTicket(query.convertToQuery().addOrder(Sort.Direction.DESC, "id")); + } + +} diff --git a/platform-dal/src/main/java/com/lyms/platform/beans/SerialIdEnum.java b/platform-dal/src/main/java/com/lyms/platform/beans/SerialIdEnum.java index cad1641..c0a431d 100644 --- a/platform-dal/src/main/java/com/lyms/platform/beans/SerialIdEnum.java +++ b/platform-dal/src/main/java/com/lyms/platform/beans/SerialIdEnum.java @@ -46,6 +46,8 @@ public enum SerialIdEnum { SmsTemplateModel("SmsTemplateModel", 97531000410L), StopPregModel("StopPregModel", 97531000420L), VisitModel("VisitModel", 97531000430L), + PatientTicketId("PatientTicketId", 97531000440L), + PatientCheckTicket("PatientCheckTicket", 97531000450L), last("last", 97531009990L); private String cname; private Long cid; diff --git a/platform-dal/src/main/java/com/lyms/platform/pojo/PatientCheckTicket.java b/platform-dal/src/main/java/com/lyms/platform/pojo/PatientCheckTicket.java new file mode 100644 index 0000000..81b93ab --- /dev/null +++ b/platform-dal/src/main/java/com/lyms/platform/pojo/PatientCheckTicket.java @@ -0,0 +1,80 @@ +package com.lyms.platform.pojo; + +import com.lyms.platform.beans.SerialIdEnum; +import com.lyms.platform.common.result.BaseModel; +import org.springframework.data.mongodb.core.mapping.Document; + +import java.util.Date; + +/** + * Created by riecard on 2016/12/28. + */ +@Document(collection="lyms_patient_check_ticket") +public class PatientCheckTicket extends BaseModel { + + private static final long serialVersionUID = SerialIdEnum.PatientCheckTicket.getCid(); + + private String id; + private String patientId; + private String hospitalId; + private String consumeHospitalId; + private Integer status; // 1:创建未使用, 2:产检使用,3:分娩销毁 + private Date created; + private Date consumeDate; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getPatientId() { + return patientId; + } + + public void setPatientId(String patientId) { + this.patientId = patientId; + } + + public String getHospitalId() { + return hospitalId; + } + + public void setHospitalId(String hospitalId) { + this.hospitalId = hospitalId; + } + + public String getConsumeHospitalId() { + return consumeHospitalId; + } + + public void setConsumeHospitalId(String consumeHospitalId) { + this.consumeHospitalId = consumeHospitalId; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + + public Date getCreated() { + return created; + } + + public void setCreated(Date created) { + this.created = created; + } + + public Date getConsumeDate() { + return consumeDate; + } + + public void setConsumeDate(Date consumeDate) { + this.consumeDate = consumeDate; + } +} diff --git a/platform-dal/src/main/java/com/lyms/platform/pojo/PatientTicketId.java b/platform-dal/src/main/java/com/lyms/platform/pojo/PatientTicketId.java new file mode 100644 index 0000000..adbcf82 --- /dev/null +++ b/platform-dal/src/main/java/com/lyms/platform/pojo/PatientTicketId.java @@ -0,0 +1,33 @@ +package com.lyms.platform.pojo; + +import com.lyms.platform.beans.SerialIdEnum; +import com.lyms.platform.common.result.BaseModel; +import org.springframework.data.mongodb.core.mapping.Document; + +/** + * Created by riecard on 2016/12/28. + */ +@Document(collection="lyms_patient_ticket_id") +public class PatientTicketId extends BaseModel { + + private static final long serialVersionUID = SerialIdEnum.PatientTicketId.getCid(); + + private String id; + private Integer ticketId; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public Integer getTicketId() { + return ticketId; + } + + public void setTicketId(Integer ticketId) { + this.ticketId = ticketId; + } +} diff --git a/platform-dal/src/main/java/com/lyms/platform/query/PatientCheckTicketQuery.java b/platform-dal/src/main/java/com/lyms/platform/query/PatientCheckTicketQuery.java new file mode 100644 index 0000000..8b12559 --- /dev/null +++ b/platform-dal/src/main/java/com/lyms/platform/query/PatientCheckTicketQuery.java @@ -0,0 +1,82 @@ +package com.lyms.platform.query; + +import com.lyms.platform.common.base.IConvertToNativeQuery; +import com.lyms.platform.common.dao.BaseQuery; +import com.lyms.platform.common.dao.operator.MongoCondition; +import com.lyms.platform.common.dao.operator.MongoOper; +import com.lyms.platform.common.dao.operator.MongoQuery; +import com.lyms.platform.common.utils.StringUtils; +import org.springframework.data.mongodb.core.query.Criteria; + +/** + * Created by riecard on 2016/12/28. + */ +public class PatientCheckTicketQuery extends BaseQuery implements IConvertToNativeQuery { + + private String id; + private String patientId; + private String hospitalId; + private String consumeHospitalId; + private Integer status; // 1:创建未使用, 2:产检使用,3:分娩销毁 + + @Override + public MongoQuery convertToQuery() { + MongoCondition condition = MongoCondition.newInstance(); + if (status != null) { + condition = condition.and("status", status, MongoOper.IS); + } + if (!StringUtils.isEmpty(id)) { + condition = condition.and("id", id, MongoOper.IS); + } + if (!StringUtils.isEmpty(patientId)) { + condition = condition.and("patientId", patientId, MongoOper.IS); + } + if (!StringUtils.isEmpty(hospitalId)) { + condition = condition.and("hospitalId", hospitalId, MongoOper.IS); + } + if (!StringUtils.isEmpty(consumeHospitalId)) { + condition = condition.and("consumeHospitalId", consumeHospitalId, MongoOper.IS); + } + return condition.toMongoQuery(); + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getPatientId() { + return patientId; + } + + public void setPatientId(String patientId) { + this.patientId = patientId; + } + + public String getHospitalId() { + return hospitalId; + } + + public void setHospitalId(String hospitalId) { + this.hospitalId = hospitalId; + } + + public String getConsumeHospitalId() { + return consumeHospitalId; + } + + public void setConsumeHospitalId(String consumeHospitalId) { + this.consumeHospitalId = consumeHospitalId; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } +} diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AntenatalExaminationFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AntenatalExaminationFacade.java index 87e2546..8cf1551 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AntenatalExaminationFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AntenatalExaminationFacade.java @@ -64,6 +64,9 @@ public class AntenatalExaminationFacade { @Autowired private OrganizationGroupsFacade groupsFacade; + @Autowired + private PatientCheckTicketService patientCheckTicketService; + /** * 处理区域隐藏建档 * @@ -234,6 +237,13 @@ public class AntenatalExaminationFacade { patientsService.updatePatient(patients); patientsService.updatePatientOneCol(patients.getId(), com.lyms.platform.common.utils.StringUtils.isEmpty(antExAddRequest.getNextCheckTime()) == true ? null : DateUtil.parseYMD(antExAddRequest.getNextCheckTime())); antenatalExaminationService.addOneBabyAnt(model); + // 修改关联券的使用状态,如果已使用,则返回错误码 + if (StringUtils.isNotBlank(model.getBarCode())) { + String code = patientCheckTicketService.updateTicket(model.getBarCode(), 2, model.getHospitalId()); + if (code != null) { + return new BaseResponse().setErrorcode(ErrorCodeConstants.PARAMETER_ERROR).setErrormsg(code); + } + } //修改最后一次检查时间 setLashCTimes(antExAddRequest.getParentId()); @@ -382,6 +392,13 @@ public class AntenatalExaminationFacade { antExChuModel.setYn(YnEnums.YES.getId()); antExChuModel.setHospitalId(autoMatchFacade.getHospitalId(userId)); antenatalExaminationService.addOneAntEx(antExChuModel); + // 修改关联券的使用状态,如果已使用,则返回错误码 + if (StringUtils.isNotBlank(antExChuModel.getBarCode())) { + String code = patientCheckTicketService.updateTicket(antExChuModel.getBarCode(), 2, antExChuModel.getHospitalId()); + if (code != null) { + return new BaseResponse().setErrorcode(ErrorCodeConstants.PARAMETER_ERROR).setErrormsg(code); + } + } //修改患者风险等级 patients.setLastCheckEmployeeId(excAddRequest.getProdDoctor()); diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BookbuildingFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BookbuildingFacade.java index 4b26902..ed14d48 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BookbuildingFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BookbuildingFacade.java @@ -103,6 +103,12 @@ public class BookbuildingFacade { @Autowired private OrganizationGroupsFacade groupsFacade; + @Autowired + private AutoIncermentService autoIncermentService; + + @Autowired + private PatientCheckTicketService patientCheckTicketService; + /** * 添加孕妇建档 @@ -237,6 +243,18 @@ public class BookbuildingFacade { createBuildSms(p); } + // 建档成功后,给孕妇造五个条形码 + String ticketPid = autoIncermentService.nextPatientTicketId(); + 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("0335" + ticketPid + String.format("%02d", i)); + patientCheckTicketService.addTicket(ticket); + } + br.setErrorcode(ErrorCodeConstants.SUCCESS); br.setErrormsg("成功"); br.setData(p.getId()); -- 1.8.3.1