From 18cd243e5f4751b91ac9d5da56673eed5d0ab718 Mon Sep 17 00:00:00 2001 From: LiJianZhao Date: Wed, 23 Apr 2025 17:09:10 +0800 Subject: [PATCH] dev --- .../server/common/api/input/IM2201.java | 40 +++++ .../server/common/api/input/IM2203A.java | 76 +++++++++ .../server/common/api/input/IM3401.java | 52 ++++++ .../server/common/api/input/IM3402.java | 52 ++++++ .../server/common/api/input/IM3403.java | 22 +++ .../common/api/request/SocialRequest.java | 18 +++ .../controller/charge/ChargeController.java | 16 +- .../common/CommonConfigController.java | 112 +++++++++++++ .../patient/RegistrationController.java | 4 +- .../server/entity/charge/ChargeGoodsList.java | 6 +- .../entity/charge/dto/ChargeOrderDto.java | 33 ++++ .../entity/charge/vo/ChargeDetailVo.java | 9 +- .../entity/charge/vo/ChargeGoodsListVo.java | 118 ++++++++++++++ ...ecordDetail.java => MedicalGoodsList.java} | 38 ++--- .../entity/medical/MedicalItemList.java | 56 +++++++ .../server/entity/medical/MedicalRecord.java | 5 +- .../entity/medical/dto/MedicalRecordVo.java | 7 +- .../entity/patient/PatientRegistration.java | 24 ++- .../server/entity/social/SocialDiagnose.java | 43 ++--- .../mapper/charge/ChargeGoodsListMapper.java | 8 + .../medical/MedicalGoodsListMapper.java | 24 +++ .../mapper/medical/MedicalItemListMapper.java | 22 +++ .../medical/MedicalRecordDetailMapper.java | 18 --- .../clinic/server/service/BaseService.java | 2 +- .../server/service/charge/ChargeService.java | 148 +++++++++++++++--- .../service/common/CommonConfigService.java | 10 ++ .../service/medical/MedicalRecordService.java | 144 ++++++++++++----- .../OrganizationMemberService.java | 2 +- .../OrganizationSectionService.java | 53 ++++--- .../service/patient/PatientInfoService.java | 17 +- .../patient/PatientRegistrationService.java | 109 ++++++++++--- .../service/social/SocialDiagnoseService.java | 14 +- src/main/resources/logback-spring.xml | 52 ++++++ ...lMapper.xml => MedicalGoodsListMapper.xml} | 2 +- .../resources/xml/MedicalItemListMapper.xml | 5 + .../resources/xml/SocialDiagnoseMapper.xml | 5 + .../clinic/server/ServerApplicationTests.java | 12 +- 37 files changed, 1167 insertions(+), 211 deletions(-) create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/input/IM2201.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/input/IM2203A.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/input/IM3401.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/input/IM3402.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/input/IM3403.java create mode 100644 src/main/java/com/syjiaer/clinic/server/controller/common/CommonConfigController.java create mode 100644 src/main/java/com/syjiaer/clinic/server/entity/charge/dto/ChargeOrderDto.java create mode 100644 src/main/java/com/syjiaer/clinic/server/entity/charge/vo/ChargeGoodsListVo.java rename src/main/java/com/syjiaer/clinic/server/entity/medical/{MedicalRecordDetail.java => MedicalGoodsList.java} (52%) create mode 100644 src/main/java/com/syjiaer/clinic/server/entity/medical/MedicalItemList.java create mode 100644 src/main/java/com/syjiaer/clinic/server/mapper/medical/MedicalGoodsListMapper.java create mode 100644 src/main/java/com/syjiaer/clinic/server/mapper/medical/MedicalItemListMapper.java delete mode 100644 src/main/java/com/syjiaer/clinic/server/mapper/medical/MedicalRecordDetailMapper.java create mode 100644 src/main/resources/logback-spring.xml rename src/main/resources/xml/{MedicalRecordDetailMapper.xml => MedicalGoodsListMapper.xml} (90%) create mode 100644 src/main/resources/xml/MedicalItemListMapper.xml create mode 100644 src/main/resources/xml/SocialDiagnoseMapper.xml diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/input/IM2201.java b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM2201.java new file mode 100644 index 0000000..cdd29ad --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM2201.java @@ -0,0 +1,40 @@ +package com.syjiaer.clinic.server.common.api.input; + +import com.syjiaer.clinic.server.common.api.annotations.IMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.time.LocalDateTime; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class IM2201 extends BaseInputModel{ + @IMField(key = "psn_no", name = "人员编号", required = true) + private String psnNo; + @IMField(key = "insutype", name = "险种类型", required = true) + private String insutype; + @IMField(key = "begntime", name = "开始时间", required = true) + private LocalDateTime begntime; + @IMField(key = "mdtrt_cert_type", name = "就诊凭证类型", required = true) + private String mdtrtCertType; + @IMField(key = "mdtrt_cert_no", name = "就诊凭证编号", required = true) + private String mdtrtCertNo; + @IMField(key = "ipt_otp_no", name = "住院/门诊号", required = true) + private String iptOtpNo; + @IMField(key = "atddr_no", name = "医师编码", required = true) + private String atddrNo; + @IMField(key = "dr_name", name = "医师姓名", required = true) + private String drName; + @IMField(key = "dept_code", name = "科室编码", required = true) + private String deptCode; + @IMField(key = "dept_name", name = "科室名称", required = true) + private String deptName; + @IMField(key = "caty", name = "科别", required = true) + private String caty; + @IMField(key = "exp_content", name = "字段扩展") + private String expContent; +} diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/input/IM2203A.java b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM2203A.java new file mode 100644 index 0000000..cf3cb0b --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM2203A.java @@ -0,0 +1,76 @@ +package com.syjiaer.clinic.server.common.api.input; + +import com.syjiaer.clinic.server.common.api.annotations.IMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.List; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class IM2203A extends BaseInputModel{ + @IMField(key = "mdtrtinfo", name = "就诊信息", required = true) + private Mdtrtinfo mdtrtinfo; + @IMField(key = "diseinfo", name = "诊断信息", required = true) + private List diseinfo; + + @Getter + @Setter + public static class Mdtrtinfo{ + @IMField(key = "mdtrt_id", name = "就诊ID", required = true) + private String mdtrt_id; + @IMField(key = "psn_no", name = "人员编号", required = true) + private String psn_no; + @IMField(key = "med_type", name = "医疗类别", required = true) + private String med_type; + @IMField(key = "begntime", name = "开始时间", required = true) + private LocalDateTime begntime; + @IMField(key = "main_cond_dscr", name = "主要病情描述") + private String main_cond_dscr; + @IMField(key = "dise_codg", name = "病种编码") + private String dise_codg; + @IMField(key = "dise_name", name = "病种名称") + private String dise_name; + @IMField(key = "birctrl_type", name = "计划生育手术类别", required = true) + private String birctrl_type; + @IMField(key = "birctrl_matn_date", name = "计划生育手术或生育日期") + private LocalDate birctrl_matn_date; + @IMField(key = "matn_type", name = "生育类别") + private String matn_type; + @IMField(key = "geso_val", name = "孕周数") + private BigDecimal geso_val; + @IMField(key = "exp_content", name = "字段扩展") + private String exp_content; + } + @Getter + @Setter + public static class Diseinfo{ + @IMField(key = "diag_type", name = "诊断类别", required = true) + private String diag_type; + @IMField(key = "diag_srt_no", name = "诊断排序号", required = true) + private BigDecimal diag_srt_no; + @IMField(key = "diag_code", name = "诊断代码", required = true) + private String diag_code; + @IMField(key = "diag_name", name = "诊断名称", required = true) + private String diag_name; + @IMField(key = "diag_dept", name = "诊断科室", required = true) + private String diag_dept; + @IMField(key = "dise_dor_no", name = "诊断医生编码", required = true) + private String dise_dor_no; + @IMField(key = "dise_dor_name", name = "诊断医生姓名", required = true) + private String dise_dor_name; + @IMField(key = "diag_time", name = "诊断时间", required = true) + private LocalDateTime diag_time; + @IMField(key = "vali_flag", name = "有效标志", required = true) + private String vali_flag; + } + + +} diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3401.java b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3401.java new file mode 100644 index 0000000..d9e8e5f --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3401.java @@ -0,0 +1,52 @@ +package com.syjiaer.clinic.server.common.api.input; + +import com.syjiaer.clinic.server.common.api.annotations.IMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.time.LocalDate; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class IM3401 extends BaseInputModel{ + @IMField(key="hosp_dept_codg",name = "医院科室编码",required = true) + private String hospDeptCodg; + @IMField(key="caty",name = "科别",required = true) + private String caty; + @IMField(key="hosp_dept_name",name = "医院科室名称",required = true) + private String hospDeptName; + @IMField(key="begntime",name = "开始时间",required = true) + private LocalDate begntime; + @IMField(key="endtime",name = "结束时间",required = false) + private LocalDate endtime; + @IMField(key="itro",name = "简介",required = true) + private String itro; + @IMField(key="dept_resper_name",name = "科室负责人姓名",required = true) + private String deptResperName; + @IMField(key="dept_resper_tel",name = "科室负责人电话",required = true) + private String deptResperTel; + @IMField(key="dept_med_serv_scp",name = "科室医疗服务范围",required = false) + private String deptMedServScp; + @IMField(key="dept_estbdat",name = "科室成立日期",required = true) + private LocalDate deptEstbdat; + @IMField(key="aprv_bed_cnt",name = "批准床位数量",required = true) + private Integer aprvBedCnt; + @IMField(key="hi_crtf_bed_cnt",name = "医保认可床位数",required = false) + private Integer hiCrtfBedCnt; + @IMField(key="poolarea_no",name = "统筹区编号",required = true) + private String poolareaNo; + @IMField(key="dr_psncnt",name = "医师人数",required = true) + private Integer drPsncnt; + @IMField(key="phar_psncnt",name = "药师人数",required = true) + private Integer pharPsncnt; + @IMField(key="nurs_psncnt",name = "护士人数",required = true) + private Integer nursPsncnt; + @IMField(key="tecn_psncnt",name = "技师人数",required = true) + private Integer tecnPsncnt; + @IMField(key="memo",name = "备注",required = false) + private String memo; +} \ No newline at end of file diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3402.java b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3402.java new file mode 100644 index 0000000..835cad2 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3402.java @@ -0,0 +1,52 @@ +package com.syjiaer.clinic.server.common.api.input; + +import com.syjiaer.clinic.server.common.api.annotations.IMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.time.LocalDate; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class IM3402 extends BaseInputModel{ + @IMField(key="hosp_dept_codg",name = "医院科室编码",required = true) + private String hospDeptCodg; + @IMField(key="hosp_dept_name",name = "医院科室名称",required = true) + private String hospDeptName; + @IMField(key="begntime",name = "开始时间",required = true) + private LocalDate begntime; + @IMField(key="endtime",name = "结束时间") + private LocalDate endtime; + @IMField(key="itro",name = "简介",required = true) + private String itro; + @IMField(key="dept_resper_name",name = "科室负责人姓名",required = true) + private String deptResperName; + @IMField(key="dept_resper_tel",name = "科室负责人电话",required = true) + private String deptResperTel; + @IMField(key="dept_med_serv_scp",name = "科室医疗服务范围") + private String deptMedServScp; + @IMField(key="caty",name = "科别",required = true) + private String caty; + @IMField(key="dept_estbdat",name = "科室成立日期",required = true) + private LocalDate deptEstbdat; + @IMField(key="aprv_bed_cnt",name = "批准床位数量",required = true) + private Integer aprvBedCnt; + @IMField(key="hi_crtf_bed_cnt",name = "医保认可床位数") + private Integer hiCrtfBedCnt; + @IMField(key="poolarea_no",name = "统筹区编号",required = true) + private String poolareaNo; + @IMField(key="dr_psncnt",name = "医师人数",required = true) + private Integer drPsncnt; + @IMField(key="phar_psncnt",name = "药师人数",required = true) + private Integer pharPsncnt; + @IMField(key="nurs_psncnt",name = "护士人数",required = true) + private Integer nursPsncnt; + @IMField(key="tecn_psncnt",name = "技师人数",required = true) + private Integer tecnPsncnt; + @IMField(key="memo",name = "备注") + private String memo; +} \ No newline at end of file diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3403.java b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3403.java new file mode 100644 index 0000000..309df0b --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3403.java @@ -0,0 +1,22 @@ +package com.syjiaer.clinic.server.common.api.input; + +import com.syjiaer.clinic.server.common.api.annotations.IMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.time.LocalDate; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class IM3403 extends BaseInputModel{ + @IMField(key="hosp_dept_codg",name = "医院科室编码",required = true) + private String hospDeptCodg; + @IMField(key="hosp_dept_name",name = "医院科室名称",required = true) + private String hospDeptName; + @IMField(key="begntime",name = "开始时间",required = true) + private LocalDate begntime; +} \ No newline at end of file diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/request/SocialRequest.java b/src/main/java/com/syjiaer/clinic/server/common/api/request/SocialRequest.java index b8489fd..ff2bd01 100644 --- a/src/main/java/com/syjiaer/clinic/server/common/api/request/SocialRequest.java +++ b/src/main/java/com/syjiaer/clinic/server/common/api/request/SocialRequest.java @@ -151,4 +151,22 @@ public class SocialRequest { JSONObject jsonObject = httpUtil.call("3202", im3202.buildToMap()); return JSONObject.parseObject(jsonObject.get("fileinfo").toString(), OM3202.class); } + + public void call3401(IM3401 im3401) { + httpUtil.callWithOutLog("3401", "deptinfo", im3401.buildToMap()); + } + public void call3402(IM3402 im3402) { + httpUtil.callWithOutLog("3402", "deptinfo", im3402.buildToMap()); + } + public void call3403(IM3403 im3403) { + httpUtil.callWithOutLog("3403", "data", im3403.buildToMap()); + } + + public JSONObject call2201(IM2201 im2201) { + return httpUtil.call("2201", "data", im2201.buildToMap()); + } + + public void call2203A(IM2203A im2203A) { + httpUtil.call("2203A", im2203A.buildToMap()); + } } diff --git a/src/main/java/com/syjiaer/clinic/server/controller/charge/ChargeController.java b/src/main/java/com/syjiaer/clinic/server/controller/charge/ChargeController.java index 7b342bc..bf0eb8a 100644 --- a/src/main/java/com/syjiaer/clinic/server/controller/charge/ChargeController.java +++ b/src/main/java/com/syjiaer/clinic/server/controller/charge/ChargeController.java @@ -1,9 +1,9 @@ package com.syjiaer.clinic.server.controller.charge; -import com.syjiaer.clinic.server.common.exception.MessageException; -import com.syjiaer.clinic.server.common.util.CacheUtil; import com.syjiaer.clinic.server.common.vo.Result; import com.syjiaer.clinic.server.controller.BaseController; +import com.syjiaer.clinic.server.entity.charge.ChargeOrder; +import com.syjiaer.clinic.server.entity.charge.dto.ChargeOrderDto; import com.syjiaer.clinic.server.entity.charge.dto.ChargeQuery; import com.syjiaer.clinic.server.service.charge.ChargeService; import org.springframework.beans.factory.annotation.Autowired; @@ -17,7 +17,9 @@ public class ChargeController extends BaseController { private ChargeService chargeService; @RequestMapping("/save") public Result save() { - return success(); + ChargeOrderDto dto = parmsUtil.getObject("data", ChargeOrderDto.class); + ChargeOrder chargeOrder = chargeService.updateOrCreate(dto); + return success(chargeOrder.getId()); } @RequestMapping("/list") @@ -25,4 +27,12 @@ public class ChargeController extends BaseController { ChargeQuery chargeQuery = parmsUtil.getObject("query", ChargeQuery.class); return success(chargeService.pageList(chargeQuery)); } + + @RequestMapping("/completeOrder") + public Result completeOrder() { + Integer id = parmsUtil.getInteger("id"); + Integer payType = parmsUtil.getInteger("payType"); + chargeService.completeOrder(id,payType); + return success(); + } } diff --git a/src/main/java/com/syjiaer/clinic/server/controller/common/CommonConfigController.java b/src/main/java/com/syjiaer/clinic/server/controller/common/CommonConfigController.java new file mode 100644 index 0000000..a111f42 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/controller/common/CommonConfigController.java @@ -0,0 +1,112 @@ +package com.syjiaer.clinic.server.controller.common; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.syjiaer.clinic.server.common.config.Config; +import com.syjiaer.clinic.server.common.vo.Result; +import com.syjiaer.clinic.server.controller.BaseController; +import com.syjiaer.clinic.server.entity.common.CommonConfig; +import com.syjiaer.clinic.server.service.common.CommonConfigService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + *

+ * 前端控制器 + *

+ * + * @author NiuZiYuan + * @since 2025-02-24 + */ +@RestController +@RequestMapping("/common/config") +public class CommonConfigController extends BaseController { + @Autowired + private CommonConfigService commonConfigService; + @Autowired + private Config config; + + @RequestMapping("list") + public Result list() { + return success(commonConfigService.list()); + } + + @RequestMapping("getall") + public Result getall() { + List list = commonConfigService.list(); + Map map = new HashMap<>(); + for (CommonConfig commonConfig : list) { + map.put(commonConfig.getK(), commonConfig.getVal()); + } + return success(map); + } + + @RequestMapping("edit") + public Result edit() { + Map parms = getParms(); + for (String key : parms.keySet()) { + CommonConfig commonConfig = new CommonConfig(); + commonConfig.setK(key); + commonConfig.setVal(parms.get(key).toString()); + commonConfigService.saveOrUpdate(commonConfig); + } + return success(); + } + + @RequestMapping("setcert") + public Result sercert() { + Map parms = getParms(); + String encryptedText = parmsUtil.getString("encryptedText", "请输入密文"); + CommonConfig commonConfig = new CommonConfig(); + commonConfig.setK("common_cert"); + commonConfig.setVal(encryptedText); + commonConfigService.saveOrUpdate(commonConfig); + return success(); + } + + @RequestMapping("get") + public Result get() { + String key = parmsUtil.getString("key", "请输入key"); + return success(commonConfigService.getOne(key)); + } + + /** + * 保存打印机配置 + * map -> key -> printName打印机名称 pageType 打印类型 + * @return + */ + @RequestMapping("savePrinter") + public Result updatePrinter() { + Map map = parmsUtil.getMap("printConfig"); + if (map == null) { + return error("打印机配置不能为空"); + } + config.set("print", "printerName", map.get("printName").toString()); + config.set("print", "pageType", map.get("pageType").toString()); + return success(); + } + /** + * 获取打印机配置 + * @return + */ + @RequestMapping("getPrintConfig") + public Result> getPrintConfig() { + Map map = new HashMap<>(); + map.put("printName", config.get("print", "printerName")); + map.put("pageType", config.get("print", "pageType")); + return success(map); + } + +// @RequestMapping("parsing") +// public Result parsing() { +// String ciphertext = parmsUtil.getString("ciphertext", "请输入密文"); +// return success(new RsaUtil().parsing(ciphertext)); +// } + + +} diff --git a/src/main/java/com/syjiaer/clinic/server/controller/patient/RegistrationController.java b/src/main/java/com/syjiaer/clinic/server/controller/patient/RegistrationController.java index 175510c..dc02b00 100644 --- a/src/main/java/com/syjiaer/clinic/server/controller/patient/RegistrationController.java +++ b/src/main/java/com/syjiaer/clinic/server/controller/patient/RegistrationController.java @@ -31,7 +31,9 @@ public class RegistrationController extends BaseController { public Result registration() { PatientRegistration registrationParam = parmsUtil.getObjectWithCheck("data", PatientRegistration.class); - patientRegistrationService.registration(registrationParam); + String mdtrtCertNo = parmsUtil.getString("mdtrtCertNo"); + String mdtrtCertType = parmsUtil.getString("mdtrtCertType"); + patientRegistrationService.registration(registrationParam,mdtrtCertType,mdtrtCertNo); return success(); } diff --git a/src/main/java/com/syjiaer/clinic/server/entity/charge/ChargeGoodsList.java b/src/main/java/com/syjiaer/clinic/server/entity/charge/ChargeGoodsList.java index 5f94762..1a792f5 100644 --- a/src/main/java/com/syjiaer/clinic/server/entity/charge/ChargeGoodsList.java +++ b/src/main/java/com/syjiaer/clinic/server/entity/charge/ChargeGoodsList.java @@ -19,7 +19,7 @@ import lombok.experimental.Accessors; *

* * @author NiuZiYuan - * @since 2025-04-22 + * @since 2025-04-23 */ @Getter @Setter @@ -63,7 +63,7 @@ public class ChargeGoodsList implements Serializable { private String unit; @ApiModelProperty("商品名称 冗余字段") - private String goodsName; + private String name; @ApiModelProperty("流水号") private String feedetlSn; @@ -72,7 +72,7 @@ public class ChargeGoodsList implements Serializable { private LocalDateTime createTime; @ApiModelProperty("商品类型") - private Integer goodsType; + private Integer type; @ApiModelProperty("成本") private BigDecimal cost; diff --git a/src/main/java/com/syjiaer/clinic/server/entity/charge/dto/ChargeOrderDto.java b/src/main/java/com/syjiaer/clinic/server/entity/charge/dto/ChargeOrderDto.java new file mode 100644 index 0000000..0b20fbf --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/entity/charge/dto/ChargeOrderDto.java @@ -0,0 +1,33 @@ +package com.syjiaer.clinic.server.entity.charge.dto; + +import com.syjiaer.clinic.server.entity.charge.ChargeServiceList; +import com.syjiaer.clinic.server.entity.charge.vo.ChargeGoodsListVo; +import com.syjiaer.clinic.server.entity.medical.MedicalRecord; +import com.syjiaer.clinic.server.entity.patient.PatientInfo; +import lombok.Data; + +import java.time.LocalDateTime; +import java.util.List; +@Data +public class ChargeOrderDto { + + private Long id; + private String code; + private Long managerUserId; + private Double preTotalPrice; + private Double totalPrice; + private LocalDateTime createDatetime; + private Integer status; + private String payType; + private LocalDateTime payTime; + private Long socialUserId; + private Long salePersonId; + private Long medicalRecordId; + private PatientInfo patientInfo; + private MedicalRecord medicalRecord; + private List serviceDetail; + private List goodsDetail; + + + +} \ No newline at end of file diff --git a/src/main/java/com/syjiaer/clinic/server/entity/charge/vo/ChargeDetailVo.java b/src/main/java/com/syjiaer/clinic/server/entity/charge/vo/ChargeDetailVo.java index 6b89189..f6fb8d0 100644 --- a/src/main/java/com/syjiaer/clinic/server/entity/charge/vo/ChargeDetailVo.java +++ b/src/main/java/com/syjiaer/clinic/server/entity/charge/vo/ChargeDetailVo.java @@ -2,6 +2,9 @@ package com.syjiaer.clinic.server.entity.charge.vo; import com.syjiaer.clinic.server.entity.charge.ChargeGoodsList; import com.syjiaer.clinic.server.entity.charge.ChargeServiceList; +import com.syjiaer.clinic.server.entity.medical.MedicalRecord; +import com.syjiaer.clinic.server.entity.medical.dto.MedicalRecordVo; +import com.syjiaer.clinic.server.entity.patient.PatientInfo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -51,10 +54,14 @@ public class ChargeDetailVo { @ApiModelProperty("患者姓名") private String patientName; + @ApiModelProperty + private MedicalRecord medicalRecord; + @ApiModelProperty("患者信息") + private PatientInfo patientInfo; @ApiModelProperty("诊疗服务") private List serviceDetail; @ApiModelProperty("药品耗材") - private List goodsDetail; + private List goodsDetail; } diff --git a/src/main/java/com/syjiaer/clinic/server/entity/charge/vo/ChargeGoodsListVo.java b/src/main/java/com/syjiaer/clinic/server/entity/charge/vo/ChargeGoodsListVo.java new file mode 100644 index 0000000..ee026ba --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/entity/charge/vo/ChargeGoodsListVo.java @@ -0,0 +1,118 @@ +package com.syjiaer.clinic.server.entity.charge.vo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class ChargeGoodsListVo { + + @ApiModelProperty("自增主键") + private Integer id; + + @ApiModelProperty("商品名称") + private String name; + + @ApiModelProperty("商品类型") + private Integer type; + + @ApiModelProperty("通用名") + private String commonName; + + @ApiModelProperty("医保目录编码") + private String hilistCode; + + @ApiModelProperty("单价") + private BigDecimal unitPrice; + + @ApiModelProperty("进货价") + private BigDecimal purchaseUnitPrice; + + @ApiModelProperty("生厂商") + private String producer; + + @ApiModelProperty("条形码") + private String barcode; + + @ApiModelProperty("最小制剂单位") + private String medicineDosageUnit; + + @ApiModelProperty("最小包装数量") + private Integer minPackagingNumber; + + @ApiModelProperty("最小包装单位") + private String minPackagingUnit; + + @ApiModelProperty("保质期") + private Integer expiryTime; + + @ApiModelProperty("国药准字") + private String approvalCode; + + @ApiModelProperty("拓展字段") + private String extra; + + @ApiModelProperty("分类ID") + private Integer cateId; + + @ApiModelProperty("软删除 1为删除") + private Integer deleted; + + @ApiModelProperty("利润分类") + private String profitCate; + + @ApiModelProperty("标签") + private String tags; + + @ApiModelProperty("备注") + private String remark; + + @ApiModelProperty("利率") + private Double interestRate; + + @ApiModelProperty("库存整数量 ") + private Integer inventoryWholeNumber; + + @ApiModelProperty("标识码 由追溯码生成") + private String idCode; + + @ApiModelProperty("库存分数量") + private Integer inventoryFragmentNumber; + + @ApiModelProperty("0不允许拆零 1允许拆零") + private Boolean trdnFlag; + + @ApiModelProperty("拆零价格") + private BigDecimal disassemblyPrice; + + @ApiModelProperty("最小制剂数量") + private String medicineDosageNum; + + @ApiModelProperty("包装单位") + private String packagingUnit; + + @ApiModelProperty("售卖模式") + private Integer pricingModel; + + @ApiModelProperty("加成率 30=30%") + private Integer makeUp; + + @ApiModelProperty("0禁售 1可售") + private Boolean status; + + @ApiModelProperty("库存预警数量") + private Integer inventoryWarnNumber; + + @ApiModelProperty("到期预警天数") + private Integer expiryWarnDays; + @ApiModelProperty("选择的单价") + private BigDecimal selectedPrice; + @ApiModelProperty("选择的数量") + private Integer selectedNum; + @ApiModelProperty("选择的单位") + private String selectedUnit; + +} diff --git a/src/main/java/com/syjiaer/clinic/server/entity/medical/MedicalRecordDetail.java b/src/main/java/com/syjiaer/clinic/server/entity/medical/MedicalGoodsList.java similarity index 52% rename from src/main/java/com/syjiaer/clinic/server/entity/medical/MedicalRecordDetail.java rename to src/main/java/com/syjiaer/clinic/server/entity/medical/MedicalGoodsList.java index f0cfe4f..2e9cbea 100644 --- a/src/main/java/com/syjiaer/clinic/server/entity/medical/MedicalRecordDetail.java +++ b/src/main/java/com/syjiaer/clinic/server/entity/medical/MedicalGoodsList.java @@ -5,28 +5,27 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import java.math.BigDecimal; import lombok.Getter; import lombok.Setter; import lombok.ToString; import lombok.experimental.Accessors; - -import java.io.Serializable; -import java.math.BigDecimal; /** *

* *

* * @author NiuZiYuan - * @since 2025-04-17 + * @since 2025-04-23 */ @Getter @Setter @ToString @Accessors(chain = true) -@TableName("medical_record_detail") -@ApiModel(value = "MedicalRecordDetail对象", description = "") -public class MedicalRecordDetail implements Serializable { +@TableName("medical_goods_list") +@ApiModel(value = "MedicalGoodsList对象", description = "") +public class MedicalGoodsList implements Serializable { private static final long serialVersionUID = 1L; @@ -34,27 +33,24 @@ public class MedicalRecordDetail implements Serializable { @TableId(value = "id", type = IdType.AUTO) private Integer id; - @ApiModelProperty("项目id(项目包含 goods表 item 表)") - private Integer projectId; + @ApiModelProperty("商品id") + private Integer goodsId; - @ApiModelProperty("项目名称") - private String projectName; + @ApiModelProperty("商品名称") + private String name; - @ApiModelProperty("项目医保码") - private String projectSocialCode; + @ApiModelProperty("商品医保码") + private String socialCode; - @ApiModelProperty("项目单位") - private String projectUnit; + @ApiModelProperty("商品单位") + private String unit; - @ApiModelProperty("项目单价") - private BigDecimal projectUnitPrice; + @ApiModelProperty("商品单价") + private BigDecimal unitPrice; @ApiModelProperty("病例id") private Integer medicalRecordId; - @ApiModelProperty("1 服务项目(item表) 2药品(goods表)") - private Integer type; - - @ApiModelProperty("药品数量(type=2时不能为空)") + @ApiModelProperty("药品数量") private Integer number; } diff --git a/src/main/java/com/syjiaer/clinic/server/entity/medical/MedicalItemList.java b/src/main/java/com/syjiaer/clinic/server/entity/medical/MedicalItemList.java new file mode 100644 index 0000000..6db5520 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/entity/medical/MedicalItemList.java @@ -0,0 +1,56 @@ +package com.syjiaer.clinic.server.entity.medical; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import java.math.BigDecimal; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; +/** + *

+ * + *

+ * + * @author NiuZiYuan + * @since 2025-04-23 + */ +@Getter +@Setter +@ToString +@Accessors(chain = true) +@TableName("medical_item_list") +@ApiModel(value = "MedicalItemList对象", description = "") +public class MedicalItemList implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("自增主键") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty("服务id") + private Integer itemId; + + @ApiModelProperty("服务名称") + private String name; + + @ApiModelProperty("服务医保码") + private String socialCode; + + @ApiModelProperty("服务单位") + private String unit; + + @ApiModelProperty("服务单价") + private BigDecimal unitPrice; + + @ApiModelProperty("病例id") + private Integer medicalRecordId; + + @ApiModelProperty("药品数量") + private Integer number; +} diff --git a/src/main/java/com/syjiaer/clinic/server/entity/medical/MedicalRecord.java b/src/main/java/com/syjiaer/clinic/server/entity/medical/MedicalRecord.java index 9345e43..feeeab7 100644 --- a/src/main/java/com/syjiaer/clinic/server/entity/medical/MedicalRecord.java +++ b/src/main/java/com/syjiaer/clinic/server/entity/medical/MedicalRecord.java @@ -17,7 +17,7 @@ import lombok.experimental.Accessors; *

* * @author NiuZiYuan - * @since 2025-04-22 + * @since 2025-04-23 */ @Getter @Setter @@ -71,4 +71,7 @@ public class MedicalRecord implements Serializable { @ApiModelProperty("挂单id") private Integer registrationId; + + @ApiModelProperty("诊断类别") + private String diagType; } diff --git a/src/main/java/com/syjiaer/clinic/server/entity/medical/dto/MedicalRecordVo.java b/src/main/java/com/syjiaer/clinic/server/entity/medical/dto/MedicalRecordVo.java index 89efadf..c474389 100644 --- a/src/main/java/com/syjiaer/clinic/server/entity/medical/dto/MedicalRecordVo.java +++ b/src/main/java/com/syjiaer/clinic/server/entity/medical/dto/MedicalRecordVo.java @@ -2,7 +2,8 @@ package com.syjiaer.clinic.server.entity.medical.dto; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; -import com.syjiaer.clinic.server.entity.medical.MedicalRecordDetail; +import com.syjiaer.clinic.server.entity.medical.MedicalGoodsList; +import com.syjiaer.clinic.server.entity.medical.MedicalItemList; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -55,7 +56,7 @@ public class MedicalRecordVo { @ApiModelProperty("挂单id") private Integer registrationId; @ApiModelProperty("诊疗服务") - private List serviceDetail; + private List serviceDetail; @ApiModelProperty("药品耗材") - private List goodsDetail; + private List goodsDetail; } diff --git a/src/main/java/com/syjiaer/clinic/server/entity/patient/PatientRegistration.java b/src/main/java/com/syjiaer/clinic/server/entity/patient/PatientRegistration.java index 111209c..f9a3bbc 100644 --- a/src/main/java/com/syjiaer/clinic/server/entity/patient/PatientRegistration.java +++ b/src/main/java/com/syjiaer/clinic/server/entity/patient/PatientRegistration.java @@ -5,29 +5,27 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; import lombok.Getter; import lombok.Setter; import lombok.ToString; import lombok.experimental.Accessors; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.time.LocalDateTime; - /** *

* 挂号表 *

* * @author NiuZiYuan - * @since 2025-04-10 + * @since 2025-04-23 */ @Getter @Setter @ToString @Accessors(chain = true) @TableName("patient_registration") -@ApiModel(value = "Registration对象", description = "挂号表") +@ApiModel(value = "PatientRegistration对象", description = "挂号表") public class PatientRegistration implements Serializable { private static final long serialVersionUID = 1L; @@ -82,4 +80,16 @@ public class PatientRegistration implements Serializable { @ApiModelProperty("挂号状态 1候诊 2在诊 3已诊 0取消") private Integer status; + + @ApiModelProperty("人员编号") + private String psnNo; + + @ApiModelProperty("险种类型") + private String insutype; + + @ApiModelProperty("就诊id 挂号后医保返会") + private String mdtrtId; + + @ApiModelProperty("流水号") + private String fstNo; } diff --git a/src/main/java/com/syjiaer/clinic/server/entity/social/SocialDiagnose.java b/src/main/java/com/syjiaer/clinic/server/entity/social/SocialDiagnose.java index b9b390f..d7aa3fe 100644 --- a/src/main/java/com/syjiaer/clinic/server/entity/social/SocialDiagnose.java +++ b/src/main/java/com/syjiaer/clinic/server/entity/social/SocialDiagnose.java @@ -3,41 +3,46 @@ package com.syjiaer.clinic.server.entity.social; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import java.time.LocalDateTime; import lombok.Getter; import lombok.Setter; import lombok.ToString; import lombok.experimental.Accessors; - -import java.io.Serializable; -import java.time.LocalDateTime; - /** *

- * 医保目录 + * 疾病与诊断目录1307 *

* * @author NiuZiYuan - * @since 2025-04-02 + * @since 2025-04-23 */ @Getter @Setter @ToString @Accessors(chain = true) @TableName("social_diagnose") -@ApiModel(value = "SocialIDiagnose对象", description = "医疗服务项目1305,1321") +@ApiModel(value = "SocialDiagnose对象", description = "疾病与诊断目录1307") public class SocialDiagnose implements Serializable { private static final long serialVersionUID = 1L; - @ApiModelProperty("主键") @TableId(value = "id", type = IdType.AUTO) private Integer id; - @ApiModelProperty("医保目录编码") - private String socialCode; + @ApiModelProperty("诊断名称") + private String name; + + @ApiModelProperty("诊断代码") + private String code; + + @ApiModelProperty("类目名称") + private String categoryName; + + @ApiModelProperty("亚目名称") + private String suborderName; @ApiModelProperty("数据创建时间") private LocalDateTime createDatetime; @@ -47,20 +52,4 @@ public class SocialDiagnose implements Serializable { @ApiModelProperty("版本名称") private String versionName; - - @ApiModelProperty("章名称") - private String chapterName; - - @ApiModelProperty("节名称") - private String secondaryName; - - @ApiModelProperty("类目名称") - private String categoryName; - - @ApiModelProperty("亚目名称") - private String suborderName; - - @ApiModelProperty("诊断名称") - private String diagnosisName; - } diff --git a/src/main/java/com/syjiaer/clinic/server/mapper/charge/ChargeGoodsListMapper.java b/src/main/java/com/syjiaer/clinic/server/mapper/charge/ChargeGoodsListMapper.java index 7e1be2b..8488d40 100644 --- a/src/main/java/com/syjiaer/clinic/server/mapper/charge/ChargeGoodsListMapper.java +++ b/src/main/java/com/syjiaer/clinic/server/mapper/charge/ChargeGoodsListMapper.java @@ -2,6 +2,11 @@ package com.syjiaer.clinic.server.mapper.charge; import com.syjiaer.clinic.server.entity.charge.ChargeGoodsList; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.syjiaer.clinic.server.entity.charge.vo.ChargeGoodsListVo; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** @@ -13,6 +18,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; * @since 2025-04-22 */ public interface ChargeGoodsListMapper extends BaseMapper { + @Select("select cg.unit as selected_unit ,cg.unit_price as selected_price,cg.\"number\" as selected_num,goods.* " + + "from charge_goods_list as cg LEFT JOIN goods ON cg.goods_id = goods.\"id\" WHERE cg.charge_order_code = #{code} ") + List selectDetailByCode(@Param("code")String code); } diff --git a/src/main/java/com/syjiaer/clinic/server/mapper/medical/MedicalGoodsListMapper.java b/src/main/java/com/syjiaer/clinic/server/mapper/medical/MedicalGoodsListMapper.java new file mode 100644 index 0000000..3b799b3 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/mapper/medical/MedicalGoodsListMapper.java @@ -0,0 +1,24 @@ +package com.syjiaer.clinic.server.mapper.medical; + +import com.syjiaer.clinic.server.entity.medical.MedicalGoodsList; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import lombok.Setter; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + + +/** + *

+ * Mapper 接口 + *

+ * + * @author NiuZiYuan + * @since 2025-04-23 + */ +public interface MedicalGoodsListMapper extends BaseMapper { + + @Select("select * from medical_goods_list where medical_record_id = #{medicalRecordId}") + List listByMedicalRecordId(Integer medicalRecordId); +} + diff --git a/src/main/java/com/syjiaer/clinic/server/mapper/medical/MedicalItemListMapper.java b/src/main/java/com/syjiaer/clinic/server/mapper/medical/MedicalItemListMapper.java new file mode 100644 index 0000000..c2a3c25 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/mapper/medical/MedicalItemListMapper.java @@ -0,0 +1,22 @@ +package com.syjiaer.clinic.server.mapper.medical; + +import com.syjiaer.clinic.server.entity.medical.MedicalItemList; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + + +/** + *

+ * Mapper 接口 + *

+ * + * @author NiuZiYuan + * @since 2025-04-23 + */ +public interface MedicalItemListMapper extends BaseMapper { + @Select("select * from medical_item_list where medical_record_id = #{medicalRecordId}") + List listByMedicalRecordId(Integer medicalRecordId); +} + diff --git a/src/main/java/com/syjiaer/clinic/server/mapper/medical/MedicalRecordDetailMapper.java b/src/main/java/com/syjiaer/clinic/server/mapper/medical/MedicalRecordDetailMapper.java deleted file mode 100644 index b43c6f6..0000000 --- a/src/main/java/com/syjiaer/clinic/server/mapper/medical/MedicalRecordDetailMapper.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.syjiaer.clinic.server.mapper.medical; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.syjiaer.clinic.server.entity.medical.MedicalRecordDetail; - - -/** - *

- * Mapper 接口 - *

- * - * @author NiuZiYuan - * @since 2025-04-17 - */ -public interface MedicalRecordDetailMapper extends BaseMapper { - -} - diff --git a/src/main/java/com/syjiaer/clinic/server/service/BaseService.java b/src/main/java/com/syjiaer/clinic/server/service/BaseService.java index 2bc9d9d..a52d755 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/BaseService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/BaseService.java @@ -71,7 +71,7 @@ public abstract class BaseService { protected Page pageHelper(int pageNum, int pageSize, QueryWrapper queryWrapper, BaseMapper mapper,String orderByStr ,boolean isAsc){ Long totalCount = mapper.selectCount(queryWrapper); - if (orderByStr == null || orderByStr.isEmpty()){ + if (orderByStr != null && !orderByStr.isEmpty()){ queryWrapper.orderBy(true,isAsc,orderByStr); } queryWrapper.last("LIMIT " + pageSize + " OFFSET " + (pageNum - 1) * pageSize); diff --git a/src/main/java/com/syjiaer/clinic/server/service/charge/ChargeService.java b/src/main/java/com/syjiaer/clinic/server/service/charge/ChargeService.java index ef1d1a9..63e42c1 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/charge/ChargeService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/charge/ChargeService.java @@ -2,26 +2,45 @@ package com.syjiaer.clinic.server.service.charge; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.syjiaer.clinic.server.common.constants.Constants; +import com.syjiaer.clinic.server.common.enums.InventorySocialTypeEnum; +import com.syjiaer.clinic.server.common.enums.InventoryTypeEnum; import com.syjiaer.clinic.server.common.enums.RetailOrderStatusEnum; +import com.syjiaer.clinic.server.common.exception.MessageException; import com.syjiaer.clinic.server.common.util.StringUtil; import com.syjiaer.clinic.server.common.vo.Page; import com.syjiaer.clinic.server.entity.charge.ChargeGoodsList; import com.syjiaer.clinic.server.entity.charge.ChargeOrder; import com.syjiaer.clinic.server.entity.charge.ChargeServiceList; +import com.syjiaer.clinic.server.entity.charge.dto.ChargeOrderDto; import com.syjiaer.clinic.server.entity.charge.dto.ChargeQuery; import com.syjiaer.clinic.server.entity.charge.vo.ChargeDetailVo; +import com.syjiaer.clinic.server.entity.charge.vo.ChargeGoodsListVo; import com.syjiaer.clinic.server.entity.goods.Goods; +import com.syjiaer.clinic.server.entity.inventory.InventoryLog; import com.syjiaer.clinic.server.entity.item.Item; import com.syjiaer.clinic.server.entity.manager.ManagerUser; +import com.syjiaer.clinic.server.entity.medical.MedicalRecord; import com.syjiaer.clinic.server.entity.medical.dto.GoodsRetailDto; import com.syjiaer.clinic.server.entity.medical.dto.MedicalRecordSaveDto; +import com.syjiaer.clinic.server.entity.organization.OrganizationMember; +import com.syjiaer.clinic.server.entity.patient.PatientInfo; +import com.syjiaer.clinic.server.entity.patient.PatientRegistration; import com.syjiaer.clinic.server.mapper.charge.ChargeGoodsListMapper; import com.syjiaer.clinic.server.mapper.charge.ChargeOrderMapper; import com.syjiaer.clinic.server.mapper.charge.ChargeServiceListMapper; import com.syjiaer.clinic.server.mapper.goods.GoodsMapper; +import com.syjiaer.clinic.server.mapper.inventory.InventoryLogMapper; +import com.syjiaer.clinic.server.mapper.medical.MedicalRecordMapper; +import com.syjiaer.clinic.server.mapper.organization.OrganizationMemberMapper; +import com.syjiaer.clinic.server.mapper.organization.OrganizationSectionMapper; +import com.syjiaer.clinic.server.mapper.patient.PatientInfoMapper; import com.syjiaer.clinic.server.service.BaseService; +import com.syjiaer.clinic.server.service.inventory.InventoryService; +import com.syjiaer.clinic.server.service.patient.PatientInfoService; +import com.syjiaer.clinic.server.service.patient.PatientRegistrationService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -31,6 +50,8 @@ import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; +import static com.syjiaer.clinic.server.common.enums.MedicalRecordDetailTypeEnum.goods; + @Service public class ChargeService extends BaseService { @Autowired @@ -41,10 +62,26 @@ public class ChargeService extends BaseService { private ChargeGoodsListMapper chargeGoodsListMapper; @Autowired private GoodsMapper goodsMapper; + @Autowired + private PatientInfoMapper patientInfoMapper; + @Autowired + private MedicalRecordMapper medicalRecordMapper; + @Autowired + private OrganizationMemberMapper organizationMemberMapper; + @Autowired + private PatientRegistrationService patientRegistrationService; + @Autowired + @Lazy + private ChargeService chargeService; + @Autowired + private InventoryService inventoryService; + @Autowired + private InventoryLogMapper inventoryLogMapper; + @Transactional(rollbackFor = Exception.class) - public void save(MedicalRecordSaveDto medicalRecordSaveDto){ - ChargeOrder dbOrder = chargeOrderMapper.selectById(medicalRecordSaveDto.getId()); + public ChargeOrder save(ChargeOrderDto dto){ + ChargeOrder dbOrder = chargeOrderMapper.selectById(dto.getId()); if (dbOrder != null){ //清除已有的订单 chargeServiceListMapper.delete(new QueryWrapper().eq("charge_order_code", dbOrder.getCode())); @@ -59,49 +96,49 @@ public class ChargeService extends BaseService { BigDecimal preTotalPrice = BigDecimal.ZERO; BigDecimal totalPrice = BigDecimal.ZERO; List chargeServiceLists = new ArrayList<>(); - for (Item item : medicalRecordSaveDto.getItemList()){ + for (ChargeServiceList service : dto.getServiceDetail()){ ChargeServiceList itemList = new ChargeServiceList(); String fsn = StringUtil.getCode("FSN"); itemList.setChargeOrderCode(code); - itemList.setServiceId(item.getId()); + itemList.setServiceId(service.getId()); - itemList.setPreUnitPrice(item.getUnitPrice()); - itemList.setUnitPrice(item.getUnitPrice()); + itemList.setPreUnitPrice(service.getUnitPrice()); + itemList.setUnitPrice(service.getUnitPrice()); itemList.setNumber(1); - BigDecimal subTotalPrice = item.getUnitPrice(); - itemList.setSubTotalPrice(item.getUnitPrice()); - itemList.setUnit(item.getUnit()); - itemList.setName(item.getItemName()); + BigDecimal subTotalPrice = service.getUnitPrice(); + itemList.setSubTotalPrice(service.getUnitPrice()); + itemList.setUnit(service.getUnit()); + itemList.setName(service.getName()); itemList.setFeedetlSn(fsn); itemList.setCreateDate(nowLocalDate); itemList.setCreateTime(nowLocalDateTime); chargeServiceLists.add(itemList); - preTotalPrice = preTotalPrice.add(item.getUnitPrice()); - totalPrice = totalPrice.add(item.getUnitPrice()); + preTotalPrice = preTotalPrice.add(service.getUnitPrice()); + totalPrice = totalPrice.add(service.getUnitPrice()); } chargeServiceListMapper.insert(chargeServiceLists); List chargeGoodsLists = new ArrayList<>(); - for (GoodsRetailDto goodsRetailDto : medicalRecordSaveDto.getGoodsList()){ + for (ChargeGoodsListVo goods : dto.getGoodsDetail()){ ChargeGoodsList itemList = new ChargeGoodsList(); - Goods dbGoods = goodsMapper.selectById(goodsRetailDto.getId()); + Goods dbGoods = goodsMapper.selectById(goods.getId()); if (dbGoods == null){ throw new RuntimeException("商品不存在"); } String fsn = StringUtil.getCode("FSN"); itemList.setChargeOrderCode(code); - itemList.setGoodsId(goodsRetailDto.getId()); - itemList.setPreUnitPrice(goodsRetailDto.getSelectedPrice()); - itemList.setUnitPrice(goodsRetailDto.getSelectedPrice()); - itemList.setNumber(goodsRetailDto.getSelectNum()); - BigDecimal subTotalPrice = goodsRetailDto.getSelectedPrice().multiply(BigDecimal.valueOf(goodsRetailDto.getSelectNum())); + itemList.setGoodsId(goods.getId()); + itemList.setPreUnitPrice(goods.getSelectedPrice()); + itemList.setUnitPrice(goods.getSelectedPrice()); + itemList.setNumber(goods.getSelectedNum()); + BigDecimal subTotalPrice = goods.getSelectedPrice().multiply(BigDecimal.valueOf(goods.getSelectedNum())); itemList.setSubTotalPrice(subTotalPrice); itemList.setTrdnFlag(true); - if (dbGoods.getPackagingUnit().equals(goodsRetailDto.getSelectedUnit()) || dbGoods.getPackagingUnit().equals(dbGoods.getMinPackagingUnit())){ + if (dbGoods.getPackagingUnit().equals(goods.getSelectedUnit()) || dbGoods.getPackagingUnit().equals(dbGoods.getMinPackagingUnit())){ itemList.setTrdnFlag(false); } - itemList.setUnit(goodsRetailDto.getSelectedUnit()); - itemList.setGoodsName(dbGoods.getName()); + itemList.setUnit(goods.getSelectedUnit()); + itemList.setName(dbGoods.getName()); itemList.setFeedetlSn(fsn); itemList.setCreateDate(nowLocalDate); itemList.setCreateTime(nowLocalDateTime); @@ -117,10 +154,11 @@ public class ChargeService extends BaseService { chargeOrder.setTotalPrice(totalPrice); chargeOrder.setCreateDatetime(nowLocalDateTime); chargeOrder.setStatus(RetailOrderStatusEnum.UNFINISHED.getCode()); - chargeOrder.setPatientId(medicalRecordSaveDto.getPatientId()); + chargeOrder.setPatientId(dto.getPatientInfo().getId()); chargeOrder.setSalePersonId(user.getId()); - chargeOrder.setMedicalRecordId(medicalRecordSaveDto.getId()); + chargeOrder.setMedicalRecordId(dto.getMedicalRecord().getId()); chargeOrderMapper.insert(chargeOrder); + return chargeOrder; } @@ -141,10 +179,12 @@ public class ChargeService extends BaseService { for (ChargeOrder chargeOrder : orderPage.getList()){ ChargeDetailVo detailVo = new ChargeDetailVo(); BeanUtils.copyProperties(chargeOrder, detailVo); + detailVo.setMedicalRecord(medicalRecordMapper.selectById(chargeOrder.getMedicalRecordId())); + detailVo.setPatientInfo(patientInfoMapper.selectById(chargeOrder.getPatientId())); detailVo.setServiceDetail(chargeServiceListMapper.selectList(new QueryWrapper() .eq("charge_order_code", chargeOrder.getCode()))); - detailVo.setGoodsDetail(chargeGoodsListMapper.selectList(new QueryWrapper() - .eq("charge_order_code", chargeOrder.getCode()))); + + detailVo.setGoodsDetail(chargeGoodsListMapper.selectDetailByCode(chargeOrder.getCode())); voList.add(detailVo); } Page resultPage = new Page<>(); @@ -154,6 +194,62 @@ public class ChargeService extends BaseService { return resultPage; } + @Transactional(rollbackFor = Exception.class) + public ChargeOrder updateOrCreate(ChargeOrderDto dto) { + //创建患者 + PatientInfo patientInfo = dto.getPatientInfo(); + if (patientInfo == null){ + throw new MessageException("患者信息不能为空"); + } + patientInfoMapper.insertOrUpdate(patientInfo); + if (dto.getMedicalRecord().getDockerId() == null || dto.getMedicalRecord().getDiagnosisDetail() == null){ + throw new MessageException("诊断信息和医生不能为空"); + } + //添加挂号信息 + OrganizationMember docker = organizationMemberMapper.selectById(dto.getMedicalRecord().getDockerId()); + PatientRegistration registration = patientRegistrationService.regisByDockerAndPatient(docker,patientInfo, (short) 1,1); + //todo 添加病例 + medicalRecordMapper.insertOrUpdate(dto.getMedicalRecord()); + //添加订单 + return chargeService.save(dto); + + } + + public void completeOrder (Integer id,Integer payType){ + ChargeOrder order = chargeOrderMapper.selectById(id); + if (order == null){ + throw new MessageException("订单不存在"); + } + if (!order.getStatus().equals(RetailOrderStatusEnum.UNFINISHED.getCode())){ + throw new MessageException("订单状态错误"); + } + ChargeOrder updateOrder = new ChargeOrder(); + updateOrder.setId(id); + updateOrder.setStatus(RetailOrderStatusEnum.FINISHED.getCode()); + updateOrder.setPayType(payType); + updateOrder.setPayTime(LocalDateTime.now()); + chargeOrderMapper.updateById(updateOrder); + //扣除商品库存 + List goodsLists = chargeGoodsListMapper.selectDetailByCode(order.getCode()); + for (ChargeGoodsListVo goodsList : goodsLists) { + Integer wholeNumber = 0; + Integer fragmentNumber = 0; + if (goodsList.getPackagingUnit().equals(goodsList.getSelectedUnit())){ + wholeNumber = goodsList.getSelectedNum(); + }else { + fragmentNumber = goodsList.getSelectedNum(); + } + List logs = inventoryService.adjustNumberByGoodsId(goodsList.getId(), wholeNumber, fragmentNumber, "订单完成"); + for (InventoryLog log : logs) { + log.setOperateName(order.getPatientName()); + log.setOperateId(order.getPatientId()); + log.setType(InventoryTypeEnum.GRANT_OUT.getType()); + log.setSocialType(InventorySocialTypeEnum.INVENTORY_SURPLUS.getType()); + } + inventoryLogMapper.insert(logs); + } + + } } diff --git a/src/main/java/com/syjiaer/clinic/server/service/common/CommonConfigService.java b/src/main/java/com/syjiaer/clinic/server/service/common/CommonConfigService.java index 9bb89d8..7cca8fa 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/common/CommonConfigService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/common/CommonConfigService.java @@ -22,4 +22,14 @@ public class CommonConfigService extends BaseService { QueryWrapper queryWrapper = new QueryWrapper<>(); return commonConfigMapper.selectList(queryWrapper); } + + public void saveOrUpdate(CommonConfig commonConfig){ + commonConfigMapper.insertOrUpdate(commonConfig); + } + + public CommonConfig getOne(String key) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("k", key); + return commonConfigMapper.selectOne(queryWrapper); + } } diff --git a/src/main/java/com/syjiaer/clinic/server/service/medical/MedicalRecordService.java b/src/main/java/com/syjiaer/clinic/server/service/medical/MedicalRecordService.java index 7aaabfd..a7a7ae2 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/medical/MedicalRecordService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/medical/MedicalRecordService.java @@ -1,22 +1,34 @@ package com.syjiaer.clinic.server.service.medical; +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.syjiaer.clinic.server.common.api.input.IM2201; +import com.syjiaer.clinic.server.common.api.input.IM2203A; +import com.syjiaer.clinic.server.common.api.request.SocialRequest; +import com.syjiaer.clinic.server.common.config.Config; import com.syjiaer.clinic.server.common.enums.MedicalRecordDetailTypeEnum; import com.syjiaer.clinic.server.common.enums.RegistrationStatusEnum; import com.syjiaer.clinic.server.common.exception.MessageException; import com.syjiaer.clinic.server.entity.goods.Goods; import com.syjiaer.clinic.server.entity.item.Item; import com.syjiaer.clinic.server.entity.manager.ManagerUser; +import com.syjiaer.clinic.server.entity.medical.MedicalGoodsList; +import com.syjiaer.clinic.server.entity.medical.MedicalItemList; import com.syjiaer.clinic.server.entity.medical.MedicalRecord; -import com.syjiaer.clinic.server.entity.medical.MedicalRecordDetail; import com.syjiaer.clinic.server.entity.medical.dto.GoodsRetailDto; import com.syjiaer.clinic.server.entity.medical.dto.MedicalRecordSaveDto; import com.syjiaer.clinic.server.entity.medical.dto.MedicalRecordVo; +import com.syjiaer.clinic.server.entity.organization.OrganizationMember; +import com.syjiaer.clinic.server.entity.organization.OrganizationSection; import com.syjiaer.clinic.server.entity.patient.PatientRegistration; import com.syjiaer.clinic.server.mapper.goods.GoodsMapper; import com.syjiaer.clinic.server.mapper.item.ItemMapper; -import com.syjiaer.clinic.server.mapper.medical.MedicalRecordDetailMapper; +import com.syjiaer.clinic.server.mapper.medical.MedicalGoodsListMapper; +import com.syjiaer.clinic.server.mapper.medical.MedicalItemListMapper; import com.syjiaer.clinic.server.mapper.medical.MedicalRecordMapper; +import com.syjiaer.clinic.server.mapper.organization.OrganizationMemberMapper; +import com.syjiaer.clinic.server.mapper.organization.OrganizationSectionMapper; import com.syjiaer.clinic.server.mapper.patient.PatientRegistrationMapper; import com.syjiaer.clinic.server.service.BaseService; import com.syjiaer.clinic.server.service.charge.ChargeService; @@ -25,6 +37,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.math.BigDecimal; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @@ -33,7 +47,13 @@ public class MedicalRecordService extends BaseService { @Autowired private MedicalRecordMapper medicalRecordMapper; @Autowired - private MedicalRecordDetailMapper medicalRecordDetailMapper; + private MedicalGoodsListMapper medicalGoodsListMapper; + @Autowired + private MedicalItemListMapper medicalItemListMapper; + @Autowired + private OrganizationMemberMapper organizationMemberMapper; + @Autowired + private OrganizationSectionMapper organizationSectionMapper; @Autowired private PatientRegistrationMapper patientRegistrationMapper; @Autowired @@ -42,6 +62,10 @@ public class MedicalRecordService extends BaseService { private GoodsMapper goodsMapper; @Autowired private ChargeService chargeService; + @Autowired + private Config config; + @Autowired + private SocialRequest socialRequest; /* * 保存 @@ -68,40 +92,42 @@ public class MedicalRecordService extends BaseService { medicalRecord.setDockerName(managerUser.getName()); medicalRecordMapper.insertOrUpdate(medicalRecord); Integer medicalRecordId = medicalRecord.getId(); - List detailList = new ArrayList<>(); + List itemLists = new ArrayList<>(); for (Item item : saveDto.getItemList()) { Item dbItem = itemMapper.selectById(item.getId()); - MedicalRecordDetail detail = new MedicalRecordDetail(); - detail.setMedicalRecordId(medicalRecordId); - detail.setProjectId(item.getId()); - detail.setProjectName(dbItem.getItemName()); - detail.setProjectSocialCode(dbItem.getItemSocialCode()); - detail.setProjectUnit(dbItem.getUnit()); - detail.setProjectUnitPrice(dbItem.getUnitPrice()); - detail.setType(MedicalRecordDetailTypeEnum.item.getType()); - detailList.add(detail); + MedicalItemList itemDetail = new MedicalItemList(); + itemDetail.setItemId(item.getId()); + itemDetail.setName(dbItem.getItemName()); + itemDetail.setSocialCode(dbItem.getItemSocialCode()); + itemDetail.setUnit(dbItem.getUnit()); + itemDetail.setUnitPrice(dbItem.getUnitPrice()); + itemDetail.setMedicalRecordId(medicalRecordId); + itemDetail.setNumber(1); + itemLists.add(itemDetail); } + medicalItemListMapper.insert(itemLists); + + List goodsLists = new ArrayList<>(); for (GoodsRetailDto goodsRetailDto : saveDto.getGoodsList()) { Goods dbGoods = goodsMapper.selectById(goodsRetailDto.getId()); - MedicalRecordDetail detail = new MedicalRecordDetail(); - detail.setMedicalRecordId(medicalRecordId); - detail.setProjectId(goodsRetailDto.getId()); - detail.setProjectName(dbGoods.getName()); - detail.setProjectSocialCode(dbGoods.getHilistCode()); - detail.setProjectUnit(goodsRetailDto.getSelectedUnit()); - detail.setProjectUnitPrice(goodsRetailDto.getSelectedPrice()); - detail.setType(MedicalRecordDetailTypeEnum.goods.getType()); - detail.setNumber(goodsRetailDto.getSelectNum()); - detailList.add(detail); + MedicalGoodsList goodsDetail = new MedicalGoodsList(); + goodsDetail.setGoodsId(goodsRetailDto.getId()); + goodsDetail.setName(dbGoods.getName()); + goodsDetail.setSocialCode(dbGoods.getHilistCode()); + goodsDetail.setUnit(goodsRetailDto.getSelectedUnit()); + goodsDetail.setUnitPrice(goodsRetailDto.getSelectedPrice()); + goodsDetail.setMedicalRecordId(medicalRecordId); + goodsDetail.setNumber(goodsRetailDto.getSelectNum()); + goodsLists.add(goodsDetail); } - medicalRecordDetailMapper.insertOrUpdate(detailList); + medicalGoodsListMapper.insert(goodsLists); //添加收费单 - saveDto.setId(medicalRecordId); - chargeService.save(saveDto); +// saveDto.setId(medicalRecordId); +// chargeService.save(saveDto); @@ -123,17 +149,15 @@ public class MedicalRecordService extends BaseService { List mrList = medicalRecordMapper.selectList(query); List mrvList = new ArrayList<>(); for (MedicalRecord medicalRecord : mrList) { - QueryWrapper severQuery = new QueryWrapper<>(); + QueryWrapper severQuery = new QueryWrapper<>(); MedicalRecordVo vo = new MedicalRecordVo(); BeanUtils.copyProperties(medicalRecord, vo); severQuery.eq("medical_record_id", medicalRecord.getId()); - severQuery.eq("type", 1); - List serverDetail = medicalRecordDetailMapper.selectList(severQuery); + List serverDetail = medicalItemListMapper.selectList(severQuery); vo.setServiceDetail(serverDetail); - QueryWrapper goodsQuery = new QueryWrapper<>(); + QueryWrapper goodsQuery = new QueryWrapper<>(); severQuery.eq("medical_record_id", medicalRecord.getId()); - severQuery.eq("type", 2); - List goodsDetail = medicalRecordDetailMapper.selectList(goodsQuery); + List goodsDetail = medicalGoodsListMapper.selectList(goodsQuery); vo.setGoodsDetail(goodsDetail); mrvList.add(vo); } @@ -150,18 +174,62 @@ public class MedicalRecordService extends BaseService { query.eq("registration_id", regisId); MedicalRecord mr = medicalRecordMapper.selectOne(query); - QueryWrapper severQuery = new QueryWrapper<>(); + QueryWrapper severQuery = new QueryWrapper<>(); MedicalRecordVo vo = new MedicalRecordVo(); BeanUtils.copyProperties(mr, vo); severQuery.eq("medical_record_id", mr.getId()); - severQuery.eq("type", 1); - List serverDetail = medicalRecordDetailMapper.selectList(severQuery); + List serverDetail = medicalItemListMapper.selectList(severQuery); vo.setServiceDetail(serverDetail); - QueryWrapper goodsQuery = new QueryWrapper<>(); + QueryWrapper goodsQuery = new QueryWrapper<>(); goodsQuery.eq("medical_record_id", mr.getId()); - goodsQuery.eq("type", 2); - List goodsDetail = medicalRecordDetailMapper.selectList(goodsQuery); + List goodsDetail = medicalGoodsListMapper.selectList(goodsQuery); vo.setGoodsDetail(goodsDetail); return vo; } + + public void uploadDiagnosis(Integer medicalRecordId){ + MedicalRecord medicalRecord = medicalRecordMapper.selectById(medicalRecordId); + if (medicalRecord == null){ + throw new MessageException("病历不存在"); + } + PatientRegistration patientRegistration = patientRegistrationMapper.selectById(medicalRecord.getRegistrationId()); + if (patientRegistration == null){ + throw new MessageException("挂号单不存在"); + } + OrganizationSection section = organizationSectionMapper.selectById(patientRegistration.getOrganizationSectionId()); + OrganizationMember doctor = organizationMemberMapper.selectById(patientRegistration.getOrganizationDoctorId()); + List goodsLists = medicalGoodsListMapper.listByMedicalRecordId(medicalRecordId); + List itemLists = medicalItemListMapper.listByMedicalRecordId(medicalRecordId); + + LocalDateTime curTime = LocalDateTime.now(); + IM2203A im2203A = new IM2203A(); + IM2203A.Mdtrtinfo mdtrtinfo = new IM2203A.Mdtrtinfo(); + mdtrtinfo.setMdtrt_id(patientRegistration.getMdtrtId()); + mdtrtinfo.setPsn_no(patientRegistration.getPsnNo()); + mdtrtinfo.setMed_type(config.get("social","medType")); + mdtrtinfo.setBegntime(curTime); + im2203A.setMdtrtinfo(mdtrtinfo); + JSONArray jsonArray = JSONArray.parseArray(medicalRecord.getDiagnosisDetail()); + int i =0; + List diagList = new ArrayList<>(); + for (Object object : jsonArray){ + i++; + JSONObject json = (JSONObject) object; + IM2203A.Diseinfo diag = new IM2203A.Diseinfo(); + diag.setDiag_type(medicalRecord.getDiagType()); + diag.setDiag_srt_no(BigDecimal.valueOf(i)); + diag.setDiag_code(json.getString("code")); + diag.setDiag_name(json.getString("name")); + diag.setDiag_dept(section.getName()); + diag.setDise_dor_no(doctor.getSocialMemberCode()); + diag.setDise_dor_name(doctor.getName()); + diag.setDiag_time(curTime); + diag.setVali_flag("1"); + diagList.add(diag); + } + im2203A.setDiseinfo(diagList); + socialRequest.call2203A(im2203A); + + + } } diff --git a/src/main/java/com/syjiaer/clinic/server/service/organization/OrganizationMemberService.java b/src/main/java/com/syjiaer/clinic/server/service/organization/OrganizationMemberService.java index 72d98cb..240c82c 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/organization/OrganizationMemberService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/organization/OrganizationMemberService.java @@ -39,7 +39,7 @@ public class OrganizationMemberService extends BaseService { queryWrapper.eq("tel", tel); } queryWrapper.eq("del_flag", false); - Page pageResult = pageHelper(pageNum, pageSize, queryWrapper, organizationMemberMapper); + Page pageResult = pageHelper(pageNum, pageSize, queryWrapper, organizationMemberMapper,"create_datetime",false); return pageResult; } /* diff --git a/src/main/java/com/syjiaer/clinic/server/service/organization/OrganizationSectionService.java b/src/main/java/com/syjiaer/clinic/server/service/organization/OrganizationSectionService.java index b03443e..781db42 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/organization/OrganizationSectionService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/organization/OrganizationSectionService.java @@ -2,6 +2,7 @@ package com.syjiaer.clinic.server.service.organization; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.syjiaer.clinic.server.common.api.request.SocialRequest; import com.syjiaer.clinic.server.common.config.Config; import com.syjiaer.clinic.server.common.exception.MessageException; import com.syjiaer.clinic.server.common.util.StringUtil; @@ -9,6 +10,7 @@ import com.syjiaer.clinic.server.common.vo.Page; import com.syjiaer.clinic.server.entity.organization.OrganizationSection; import com.syjiaer.clinic.server.mapper.organization.OrganizationSectionMapper; import com.syjiaer.clinic.server.service.BaseService; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -20,6 +22,7 @@ import java.util.List; * 组织科室 */ @Service +@Slf4j public class OrganizationSectionService extends BaseService { @Autowired private StringUtil stringUtil; @@ -27,6 +30,8 @@ public class OrganizationSectionService extends BaseService { private OrganizationSectionMapper organizationSectionMapper; @Autowired private Config config; + @Autowired + private SocialRequest socialRequest; /** * 分页查询科室 @@ -73,30 +78,30 @@ public class OrganizationSectionService extends BaseService { String processing = getString(caty); organizationSection.setCaty(processing); organizationSectionMapper.insert(organizationSection); -// try { -// socialRequest.call3401(new com.syjiaer.clinic.server.modules.social.api.input.IM3401() -// .setHospDeptCodg(organizationSection.getCode()) -// .setHospDeptName(organizationSection.getName()) -// .setCaty(organizationSection.getCaty()) -// .setBegntime(organizationSection.getBeginDate()) -// .setEndtime(organizationSection.getEndDate()) -// .setItro(organizationSection.getInfo()) -// .setDeptResperName(organizationSection.getResperName()) -// .setDeptResperTel(organizationSection.getResperTel()) -// .setDeptMedServScp(organizationSection.getMedServScp()) -// .setDeptEstbdat(organizationSection.getCreationDate()) -// .setAprvBedCnt(organizationSection.getBedCnt()) -// .setHiCrtfBedCnt(organizationSection.getSocialBedCnt()) -// .setPoolareaNo(social_insuplcAdmdvs) -// .setDrPsncnt(organizationSection.getDrPsncnt()) -// .setPharPsncnt(organizationSection.getPharPsncnt()) -// .setNursPsncnt(organizationSection.getNursPsncnt()) -// .setTecnPsncnt(organizationSection.getTecnPsncnt()) -// .setMemo(organizationSection.getMemo())); -// } catch (MessageException messageException) { -// log.error("科室添加失败", messageException); -// throw new MessageException("科室添加失败"); -// } + try { + socialRequest.call3401(new com.syjiaer.clinic.server.common.api.input.IM3401() + .setHospDeptCodg(organizationSection.getCode()) + .setHospDeptName(organizationSection.getName()) + .setCaty(organizationSection.getCaty()) + .setBegntime(organizationSection.getBeginDate()) + .setEndtime(organizationSection.getEndDate()) + .setItro(organizationSection.getInfo()) + .setDeptResperName(organizationSection.getResperName()) + .setDeptResperTel(organizationSection.getResperTel()) + .setDeptMedServScp(organizationSection.getMedServScp()) + .setDeptEstbdat(organizationSection.getCreationDate()) + .setAprvBedCnt(organizationSection.getBedCnt()) + .setHiCrtfBedCnt(organizationSection.getSocialBedCnt()) + .setPoolareaNo(socialInsuplcAdmdvs) + .setDrPsncnt(organizationSection.getDrPsncnt()) + .setPharPsncnt(organizationSection.getPharPsncnt()) + .setNursPsncnt(organizationSection.getNursPsncnt()) + .setTecnPsncnt(organizationSection.getTecnPsncnt()) + .setMemo(organizationSection.getMemo())); + } catch (MessageException messageException) { + log.error("科室添加失败", messageException); + throw new MessageException("科室添加失败"); + } } @Transactional(rollbackFor = Exception.class) diff --git a/src/main/java/com/syjiaer/clinic/server/service/patient/PatientInfoService.java b/src/main/java/com/syjiaer/clinic/server/service/patient/PatientInfoService.java index 3db35e3..d6a0dbb 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/patient/PatientInfoService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/patient/PatientInfoService.java @@ -1,12 +1,25 @@ package com.syjiaer.clinic.server.service.patient; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.syjiaer.clinic.server.entity.patient.PatientInfo; +import com.syjiaer.clinic.server.mapper.patient.PatientInfoMapper; import com.syjiaer.clinic.server.service.BaseService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class PatientInfoService extends BaseService { + @Autowired + private PatientInfoMapper patientInfoMapper; - - + public void save(PatientInfo patientInfo){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("phone", patientInfo.getPhone()); + PatientInfo dbInfo = patientInfoMapper.selectOne(queryWrapper); + if (dbInfo != null){ + patientInfo.setId(dbInfo.getId()); + } + patientInfoMapper.insertOrUpdate(patientInfo); + } diff --git a/src/main/java/com/syjiaer/clinic/server/service/patient/PatientRegistrationService.java b/src/main/java/com/syjiaer/clinic/server/service/patient/PatientRegistrationService.java index 32321e3..1feb9bc 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/patient/PatientRegistrationService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/patient/PatientRegistrationService.java @@ -1,10 +1,15 @@ package com.syjiaer.clinic.server.service.patient; +import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.syjiaer.clinic.server.common.api.input.IM2201; +import com.syjiaer.clinic.server.common.api.request.SocialRequest; import com.syjiaer.clinic.server.common.constants.Constants; import com.syjiaer.clinic.server.common.enums.RegistrationStatusEnum; import com.syjiaer.clinic.server.common.exception.MessageException; import com.syjiaer.clinic.server.common.util.DateUtil; +import com.syjiaer.clinic.server.common.util.StringUtil; import com.syjiaer.clinic.server.common.vo.Page; import com.syjiaer.clinic.server.entity.organization.OrganizationMember; import com.syjiaer.clinic.server.entity.organization.OrganizationSection; @@ -19,6 +24,7 @@ import com.syjiaer.clinic.server.mapper.patient.PatientRegistrationMapper; import com.syjiaer.clinic.server.service.BaseService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -40,6 +46,11 @@ public class PatientRegistrationService extends BaseService { private OrganizationMemberMapper organizationMemberMapper; @Autowired private OrganizationSectionMapper organizationSectionMapper; + @Autowired + @Lazy + private PatientRegistrationService patientRegistrationService; + @Autowired + private SocialRequest socialRequest; /* @@ -47,38 +58,94 @@ public class PatientRegistrationService extends BaseService { * @param patientRegistrationParam 挂号信息 */ @Transactional(rollbackFor = Exception.class) - public void registration(PatientRegistration registrationParam) { + public PatientRegistration registration(PatientRegistration registrationParam,String mdtrtCertType, String mdtrtCertNo) { //TODO 挂号和患者 记录身份证号非必填 if (registrationParam == null) { throw new MessageException("data参数为空"); } + LocalDateTime now =LocalDateTime.now(); + String fstNo = StringUtil.getCode("FSN"); + if (registrationParam.getPatientInfoId() == null){ + //将患者添加到患者表 + + PatientInfo patientInfo = new PatientInfo(); + patientInfo.setName(registrationParam.getName()); + patientInfo.setPhone(registrationParam.getPhone()); + patientInfo.setSex(registrationParam.getGender()); + patientInfo.setAge(registrationParam.getAge()); + + QueryWrapper patientInfoQuery = new QueryWrapper<>(); + patientInfoQuery.eq("phone", registrationParam.getPhone()); + List patientInfoList = patientInfoMapper.selectList(patientInfoQuery); + if (patientInfoList.isEmpty()) { + patientInfoMapper.insert(patientInfo); + } else { + patientInfo.setId(patientInfoList.get(0).getId()); + patientInfoMapper.updateById(patientInfo); + } + registrationParam.setPatientInfoId(patientInfo.getId()); + } PatientRegistration registration = new PatientRegistration(); BeanUtils.copyProperties(registrationParam, registration); + registration.setFstNo(fstNo); registration.setRegistrationMoney(new BigDecimal("0")); - registration.setCreateDatetime(LocalDateTime.now()); + registration.setCreateDatetime(now); registration.setType(1); registration.setStatus(1); - - //将患者添加到患者表 - - PatientInfo patientInfo = new PatientInfo(); - patientInfo.setName(registrationParam.getName()); - patientInfo.setPhone(registrationParam.getPhone()); - patientInfo.setSex(registrationParam.getGender()); - patientInfo.setAge(registrationParam.getAge()); - - QueryWrapper patientInfoQuery = new QueryWrapper<>(); - patientInfoQuery.eq("phone", registrationParam.getPhone()); - List patientInfoList = patientInfoMapper.selectList(patientInfoQuery); - if (patientInfoList.isEmpty()) { - patientInfoMapper.insert(patientInfo); - } else { - patientInfo.setId(patientInfoList.get(0).getId()); - patientInfoMapper.updateById(patientInfo); - } - registration.setPatientInfoId(patientInfo.getId()); + OrganizationMember docker = organizationMemberMapper.selectById(registration.getOrganizationDoctorId()); + OrganizationSection section = organizationSectionMapper.selectById(docker.getSectionId()); + registration.setOrganizationDoctorId(docker.getId()); + registration.setOrganizationSectionId(section.getId()); patientRegistrationMapper.insert(registration); + //医保挂号 + if (mdtrtCertType == null && mdtrtCertNo == null){ + return registration; + } + + IM2201 im2201 = new IM2201(); + im2201.setPsnNo(registration.getPsnNo()); + im2201.setInsutype(registration.getInsutype()); + im2201.setBegntime(now); + im2201.setMdtrtCertType(mdtrtCertType); + im2201.setMdtrtCertNo(mdtrtCertNo); + im2201.setIptOtpNo(fstNo); + im2201.setAtddrNo(docker.getSocialMemberCode()); + im2201.setDrName(docker.getName()); + im2201.setDeptCode(section.getCode()); + im2201.setDeptName(section.getName()); + im2201.setCaty(section.getCaty()); + JSONObject jsonObject = socialRequest.call2201(im2201); + UpdateWrapper regisWrapper = new UpdateWrapper<>(); + regisWrapper.set("mdtrt_id",((JSONObject)jsonObject.get("data")).get("mdtrt_id")); + regisWrapper.set("type",2); + regisWrapper.eq("id",registration.getId()); + patientRegistrationMapper.update(null,regisWrapper); + + + + return registration; + } + public PatientRegistration regisByDockerAndPatient(OrganizationMember docker, PatientInfo patient, Short type, Integer status){ + PatientRegistration registration = new PatientRegistration(); + //病人信息 + registration.setPatientInfoId(patient.getId()); + registration.setName(patient.getName()); + registration.setGender(patient.getSex()); + registration.setAge(patient.getAge()); + registration.setPhone(patient.getPhone()); + //医生信息 + registration.setOrganizationSectionId(docker.getSectionId()); + registration.setOrganizationDoctorId(docker.getId()); + + //挂号信息 + registration.setVisitType(type); + registration.setCreateDatetime(LocalDateTime.now()); + registration.setRegistrationMoney(BigDecimal.valueOf(0)); + registration.setDelFlag(0); + return patientRegistrationService.registration(registration,null,null); + } + /* * 挂号列表 * @param pageNum 页码 diff --git a/src/main/java/com/syjiaer/clinic/server/service/social/SocialDiagnoseService.java b/src/main/java/com/syjiaer/clinic/server/service/social/SocialDiagnoseService.java index 967ad17..ebb723c 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/social/SocialDiagnoseService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/social/SocialDiagnoseService.java @@ -40,21 +40,17 @@ public class SocialDiagnoseService { continue; } SocialDiagnose socialDiagnose = new SocialDiagnose(); - String code = line_array[0]; - socialDiagnose.setSocialCode(code); + String code = line_array[10]; + socialDiagnose.setCode(code); + socialDiagnose.setName(line_array[11]); socialDiagnose.setVersionName(line_array[22]); - socialDiagnose.setChapterName(line_array[3]); - socialDiagnose.setSecondaryName(line_array[5]); - socialDiagnose.setCategoryName(line_array[7]); - socialDiagnose.setSuborderName(line_array[9]); - socialDiagnose.setDiagnosisName(line_array[11]); socialDiagnose.setCreateDatetime(LocalDateTime.parse(line_array[20], dateTimeFormatter)); socialDiagnose.setUpdateDatetime(LocalDateTime.parse(line_array[21], dateTimeFormatter)); list.add(socialDiagnose); - codeList.add(socialDiagnose.getSocialCode()); + codeList.add(code); } QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("social_code", codeList); + queryWrapper.in("code", codeList); socialDiagnoseMapper.delete(queryWrapper); socialDiagnoseMapper.insert(list, 100); socialDirectoryVersionService.setSocialDirectoryVersion(type, version_name, list.get(0).getVersionName(), list.size()); diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..d14a1e1 --- /dev/null +++ b/src/main/resources/logback-spring.xml @@ -0,0 +1,52 @@ + + + + + + + + + + %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n + + + + ${REQUEST_FILE} + + + D:/clinic/logs/request/app.%d{yyyy-MM-dd}.log + + 30 + + + %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n + + true + + + + + ${LOG_FILE} + + + D:/clinic/logs/base/app.%d{yyyy-MM-dd}.log + + 30 + + + + %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/xml/MedicalRecordDetailMapper.xml b/src/main/resources/xml/MedicalGoodsListMapper.xml similarity index 90% rename from src/main/resources/xml/MedicalRecordDetailMapper.xml rename to src/main/resources/xml/MedicalGoodsListMapper.xml index ad0993a..8a49a36 100644 --- a/src/main/resources/xml/MedicalRecordDetailMapper.xml +++ b/src/main/resources/xml/MedicalGoodsListMapper.xml @@ -1,5 +1,5 @@ - + diff --git a/src/main/resources/xml/MedicalItemListMapper.xml b/src/main/resources/xml/MedicalItemListMapper.xml new file mode 100644 index 0000000..c434a38 --- /dev/null +++ b/src/main/resources/xml/MedicalItemListMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/xml/SocialDiagnoseMapper.xml b/src/main/resources/xml/SocialDiagnoseMapper.xml new file mode 100644 index 0000000..aae798d --- /dev/null +++ b/src/main/resources/xml/SocialDiagnoseMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/test/java/com/syjiaer/clinic/server/ServerApplicationTests.java b/src/test/java/com/syjiaer/clinic/server/ServerApplicationTests.java index db40b8e..52af46d 100644 --- a/src/test/java/com/syjiaer/clinic/server/ServerApplicationTests.java +++ b/src/test/java/com/syjiaer/clinic/server/ServerApplicationTests.java @@ -1,5 +1,8 @@ package com.syjiaer.clinic.server; +import com.syjiaer.clinic.server.common.api.input.IM2203A; +import com.syjiaer.clinic.server.service.medical.MedicalRecordService; +import com.syjiaer.clinic.server.service.social.SocialDiagnoseService; import com.syjiaer.clinic.server.service.social.SocialDirectoryService; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -12,11 +15,14 @@ import java.util.Map; class ServerApplicationTests { @Autowired - private SocialDirectoryService socialDirectoryService; + private MedicalRecordService medicalRecordService; + @Autowired + private SocialDiagnoseService socialDiagnoseService; @Test void contextLoads() { - Map download = socialDirectoryService.download("0", 1315); - System.out.println(download); + socialDiagnoseService.download(1307,"0"); + + } }