diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/output/OM2206A.java b/src/main/java/com/syjiaer/clinic/server/common/api/output/OM2206A.java new file mode 100644 index 0000000..7c6e68b --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/output/OM2206A.java @@ -0,0 +1,128 @@ +package com.syjiaer.clinic.server.common.api.output; +import com.syjiaer.clinic.server.common.api.annotations.OMField; +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 OM2206A extends BaseOutputModel{ + @OMField(key="setlinfo",name = "结算信息") + private OM2206A.Setlinfo setlinfo; + @OMField(key="setldetail",name = "结算基金分项信息") + private List setldetail; + + @Getter + @Setter + @ToString + public static class Setlinfo{ + @OMField(key = "mdtrt_id", name = "就诊ID") + private String mdtrt_id; + @OMField(key = "psn_no", name = "人员编号") + private String psn_no; + @OMField(key = "psn_name", name = "人员姓名") + private String psn_name; + @OMField(key = "psn_cert_type", name = "人员证件类型") + private String psn_cert_type; + @OMField(key = "certno", name = "证件号码") + private String certno; + @OMField(key = "gend", name = "性别") + private String gend; + @OMField(key = "naty", name = "民族") + private String naty; + @OMField(key = "brdy", name = "出生日期") + private LocalDate brdy; + @OMField(key = "age", name = "年龄") + private BigDecimal age; + @OMField(key = "insutype", name = "险种类型") + private String insutype; + @OMField(key = "psn_type", name = "人员类别") + private String psn_type; + @OMField(key = "cvlserv_flag", name = "公务员标志") + private String cvlserv_flag; + @OMField(key = "setl_time", name = "结算时间") + private LocalDateTime setl_time; + @OMField(key = "mdtrt_cert_type", name = "就诊凭证类型") + private String mdtrt_cert_type; + @OMField(key = "med_type", name = "医疗类别") + private String med_type; + @OMField(key = "medfee_sumamt", name = "医疗费总额") + private BigDecimal medfee_sumamt; + @OMField(key = "fulamt_ownpay_amt", name = "全自费金额") + private BigDecimal fulamt_ownpay_amt; + @OMField(key = "overlmt_selfpay", name = "超限价自费费用") + private BigDecimal overlmt_selfpay; + @OMField(key = "preselfpay_amt", name = "先行自付金额") + private BigDecimal preselfpay_amt; + @OMField(key = "inscp_scp_amt", name = "符合政策范围金额") + private BigDecimal inscp_scp_amt; + @OMField(key = "act_pay_dedc", name = "实际支付起付线") + private BigDecimal act_pay_dedc; + @OMField(key = "hifp_pay", name = "基本医疗保险统筹基金支出") + private BigDecimal hifp_pay; + @OMField(key = "pool_prop_selfpay", name = "基本医疗保险统筹基金支付比例") + private BigDecimal pool_prop_selfpay; + @OMField(key = "cvlserv_pay", name = "公务员医疗补助资金支出") + private BigDecimal cvlserv_pay; + @OMField(key = "hifes_pay", name = "企业补充医疗保险基金支出") + private BigDecimal hifes_pay; + @OMField(key = "hifmi_pay", name = "居民大病保险资金支出") + private BigDecimal hifmi_pay; + @OMField(key = "hifob_pay", name = "职工大额医疗费用补助基金支出") + private BigDecimal hifob_pay; + @OMField(key = "maf_pay", name = "医疗救助基金支出") + private BigDecimal maf_pay; + @OMField(key = "oth_pay", name = "其他支出") + private BigDecimal oth_pay; + @OMField(key = "fund_pay_sumamt", name = "基金支付总额") + private BigDecimal fund_pay_sumamt; + @OMField(key = "psn_part_amt", name = "个人负担总金额") + private BigDecimal psn_part_amt; + @OMField(key = "acct_pay", name = "个人账户支出") + private BigDecimal acct_pay; + @OMField(key = "psn_cash_pay", name = "个人现金支出") + private BigDecimal psn_cash_pay; + @OMField(key = "hosp_part_amt", name = "医院负担金额") + private BigDecimal hosp_part_amt; + @OMField(key = "balc", name = "余额") + private BigDecimal balc; + @OMField(key = "acct_mulaid_pay", name = "其中个人账户共济支付金额") + private BigDecimal acct_mulaid_pay; + @OMField(key = "medins_setl_id", name = "医药机构结算ID") + private String medins_setl_id; + @OMField(key = "clr_optins", name = "清算经办机构") + private String clr_optins; + @OMField(key = "clr_way", name = "清算方式") + private String clr_way; + @OMField(key = "clr_type", name = "清算类别") + private String clr_type; + @OMField(key = "exp_content", name = "字段扩展") + private String exp_content; + } + @Getter + @Setter + @ToString + public static class Setldetail{ + @OMField(key = "fund_pay_type", name = "基金支付类型") + private String fund_pay_type; + @OMField(key = "inscp_scp_amt", name = "符合政策范围金额") + private BigDecimal inscp_scp_amt; + @OMField(key = "crt_payb_lmt_amt", name = "本次可支付限额金额") + private BigDecimal crt_payb_lmt_amt; + @OMField(key = "fund_payamt", name = "基金支付金额") + private BigDecimal fund_payamt; + @OMField(key = "fund_pay_type_name", name = "基金支付类型名称") + private String fund_pay_type_name; + @OMField(key = "setl_proc_info", name = "结算过程信息") + private String setl_proc_info; + } + +} diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/output/OM2207A.java b/src/main/java/com/syjiaer/clinic/server/common/api/output/OM2207A.java new file mode 100644 index 0000000..98f213c --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/output/OM2207A.java @@ -0,0 +1,130 @@ +package com.syjiaer.clinic.server.common.api.output; + +import com.syjiaer.clinic.server.common.api.annotations.OMField; +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 OM2207A extends BaseOutputModel { + + @OMField(key="setlinfo",name = "结算信息") + private Setlinfo setlinfo; + @OMField(key="setldetail",name = "结算基金分项信息") + private List setldetail; + + @Getter + @Setter + public static class Setlinfo { + @OMField(key = "mdtrt_id", name = "就诊ID") + private String mdtrt_id; + @OMField(key = "psn_no", name = "人员编号") + private String psn_no; + @OMField(key = "psn_name", name = "人员姓名") + private String psn_name; + @OMField(key = "psn_cert_type", name = "人员证件类型") + private String psn_cert_type; + @OMField(key = "certno", name = "证件号码") + private String certno; + @OMField(key = "gend", name = "性别") + private String gend; + @OMField(key = "naty", name = "民族") + private String naty; + @OMField(key = "brdy", name = "出生日期") + private LocalDate brdy; + @OMField(key = "age", name = "年龄") + private BigDecimal age; + @OMField(key = "insutype", name = "险种类型") + private String insutype; + @OMField(key = "psn_type", name = "人员类别") + private String psn_type; + @OMField(key = "cvlserv_flag", name = "公务员标志") + private String cvlserv_flag; + @OMField(key = "setl_time", name = "结算时间") + private LocalDateTime setl_time; + @OMField(key = "mdtrt_cert_type", name = "就诊凭证类型") + private String mdtrt_cert_type; + @OMField(key = "med_type", name = "医疗类别") + private String med_type; + @OMField(key = "medfee_sumamt", name = "医疗费总额") + private BigDecimal medfee_sumamt; + @OMField(key = "fulamt_ownpay_amt", name = "全自费金额") + private BigDecimal fulamt_ownpay_amt; + @OMField(key = "overlmt_selfpay", name = "超限价自费费用") + private BigDecimal overlmt_selfpay; + @OMField(key = "preselfpay_amt", name = "先行自付金额") + private BigDecimal preselfpay_amt; + @OMField(key = "inscp_scp_amt", name = "符合政策范围金额") + private BigDecimal inscp_scp_amt; + @OMField(key = "act_pay_dedc", name = "实际支付起付线") + private BigDecimal act_pay_dedc; + @OMField(key = "hifp_pay", name = "基本医疗保险统筹基金支出") + private BigDecimal hifp_pay; + @OMField(key = "pool_prop_selfpay", name = "基本医疗保险统筹基金支付比例") + private BigDecimal pool_prop_selfpay; + @OMField(key = "cvlserv_pay", name = "公务员医疗补助资金支出") + private BigDecimal cvlserv_pay; + @OMField(key = "hifes_pay", name = "企业补充医疗保险基金支出") + private BigDecimal hifes_pay; + @OMField(key = "hifmi_pay", name = "居民大病保险资金支出") + private BigDecimal hifmi_pay; + @OMField(key = "hifob_pay", name = "职工大额医疗费用补助基金支出") + private BigDecimal hifob_pay; + @OMField(key = "maf_pay", name = "医疗救助基金支出") + private BigDecimal maf_pay; + @OMField(key = "oth_pay", name = "其他支出") + private BigDecimal oth_pay; + @OMField(key = "fund_pay_sumamt", name = "基金支付总额") + private BigDecimal fund_pay_sumamt; + @OMField(key = "psn_part_amt", name = "个人负担总金额") + private BigDecimal psn_part_amt; + @OMField(key = "acct_pay", name = "个人账户支出") + private BigDecimal acct_pay; + @OMField(key = "psn_cash_pay", name = "个人现金支出") + private BigDecimal psn_cash_pay; + @OMField(key = "hosp_part_amt", name = "医院负担金额") + private BigDecimal hosp_part_amt; + @OMField(key = "balc", name = "余额") + private BigDecimal balc; + @OMField(key = "acct_mulaid_pay", name = "其中个人账户共济支付金额") + private BigDecimal acct_mulaid_pay; + @OMField(key = "medins_setl_id", name = "医药机构结算ID") + private String medins_setl_id; + @OMField(key = "clr_optins", name = "清算经办机构") + private String clr_optins; + @OMField(key = "clr_way", name = "清算方式") + private String clr_way; + @OMField(key = "clr_type", name = "清算类别") + private String clr_type; + @OMField(key = "exp_content", name = "字段扩展") + private String exp_content; + } + + @Getter + @Setter + public static class Setldetail { + @OMField(key = "fund_pay_type", name = "基金支付类型") + private String fund_pay_type; + @OMField(key = "inscp_scp_amt", name = "符合政策范围金额") + private BigDecimal inscp_scp_amt; + @OMField(key = "crt_payb_lmt_amt", name = "本次可支付限额金额") + private BigDecimal crt_payb_lmt_amt; + @OMField(key = "fund_payamt", name = "基金支付金额") + private BigDecimal fund_payamt; + @OMField(key = "fund_pay_type_name", name = "基金支付类型名称") + private String fund_pay_type_name; + @OMField(key = "setl_proc_info", name = "结算过程信息") + private String setl_proc_info; + } + + +} 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 e85181b..c77c96c 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 @@ -174,12 +174,20 @@ public class SocialRequest { httpUtil.call("2204", im2204.buildToMap()); } - public void call2206A(IM2206A im2206A) { - httpUtil.call("2206A",im2206A.buildToMap()); + public OM2206A call2206A(IM2206A im2206A) { + JSONObject data = httpUtil.call("2206A",im2206A.buildToMap()); + OM2206A om2206A=new OM2206A(); + om2206A.setSetlinfo(JSONObject.parseObject(data.get("setlinfo").toString(), OM2206A.Setlinfo.class)); + om2206A.setSetldetail(JSONArray.parseArray(data.get("setldetail").toString(), OM2206A.Setldetail.class)); + return om2206A; } - public void call2207A(IM2207A im2207A) { - httpUtil.call("2207A",im2207A.buildToMap()); + public OM2207A call2207A(IM2207A im2207A) { + JSONObject data = httpUtil.call("2207A",im2207A.buildToMap()); + OM2207A om2207A=new OM2207A(); + om2207A.setSetlinfo(JSONObject.parseObject(data.get("setlinfo").toString(), OM2207A.Setlinfo.class)); + om2207A.setSetldetail(JSONArray.parseArray(data.get("setldetail").toString(), OM2207A.Setldetail.class)); + return om2207A; } public JSONObject call9001(IM9001 im9001){ 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 9850cb6..84c9e5d 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,5 +1,7 @@ package com.syjiaer.clinic.server.controller.charge; +import com.syjiaer.clinic.server.common.api.output.OM2206A; +import com.syjiaer.clinic.server.common.api.output.OM2207A; import com.syjiaer.clinic.server.common.util.DateUtil; import com.syjiaer.clinic.server.common.vo.Result; import com.syjiaer.clinic.server.controller.BaseController; @@ -24,7 +26,7 @@ public class ChargeController extends BaseController { public Result save() { ChargeSaveDto dto = parmsUtil.getObject("data", ChargeSaveDto.class); ChargeOrder chargeOrder = chargeService.save(dto); - return success(chargeOrder.getId()); + return success(chargeOrder.getCode()); } @RequestMapping("/list") @@ -40,26 +42,29 @@ public class ChargeController extends BaseController { chargeService.completeOrder(id,payType); return success(); } + @RequestMapping("/uploadCostDetails") + public Result uploadCostDetails() { + String changeOrderCode = parmsUtil.getString("changeOrderCode"); + chargeService.uploadCostDetails(changeOrderCode); + return success(); + } @RequestMapping("/socialPrePay") - public Result socialPrePay(){ + public Result socialPrePay(){ String changeOrderCode = parmsUtil.getString("changeOrderCode"); String mdtrtCertType = parmsUtil.getString("mdtrtCertType"); String mdtrtCertNO = parmsUtil.getString("mdtrtCertNO"); String insutype = parmsUtil.getString("insutype"); - chargeService.uploadCostDetails(changeOrderCode); - chargeService.socialPrePay(changeOrderCode,mdtrtCertType,mdtrtCertNO,insutype); - return success(); + return success(chargeService.socialPrePay(changeOrderCode,mdtrtCertType,mdtrtCertNO,insutype)); } @RequestMapping("/socialRealPay") - public Result socialRealPay(){ + public Result socialRealPay(){ String changeOrderCode = parmsUtil.getString("changeOrderCode"); String mdtrtCertType = parmsUtil.getString("mdtrtCertType"); String mdtrtCertNO = parmsUtil.getString("mdtrtCertNO"); String insutype = parmsUtil.getString("insutype"); - chargeService.socialRealPay(changeOrderCode,mdtrtCertType,mdtrtCertNO,insutype); - return success(); + return success( chargeService.socialRealPay(changeOrderCode,mdtrtCertType,mdtrtCertNO,insutype)); } /** diff --git a/src/main/java/com/syjiaer/clinic/server/mapper/social/SocialItemMapper.java b/src/main/java/com/syjiaer/clinic/server/mapper/social/SocialItemMapper.java index ab222c2..596b43d 100644 --- a/src/main/java/com/syjiaer/clinic/server/mapper/social/SocialItemMapper.java +++ b/src/main/java/com/syjiaer/clinic/server/mapper/social/SocialItemMapper.java @@ -6,7 +6,7 @@ import com.syjiaer.clinic.server.entity.social.SocialItem; import org.apache.ibatis.annotations.Select; public interface SocialItemMapper extends BaseMapper { - @Select("select * from social_item where social_code = #{code}") + @Select("select * from social_item where code = #{code}") SocialItem getByCode(String code); } 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 8377b35..aeefd12 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 @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.syjiaer.clinic.server.common.api.input.IM2204; import com.syjiaer.clinic.server.common.api.input.IM2206A; import com.syjiaer.clinic.server.common.api.input.IM2207A; +import com.syjiaer.clinic.server.common.api.output.OM2206A; +import com.syjiaer.clinic.server.common.api.output.OM2207A; import com.syjiaer.clinic.server.common.api.request.SocialRequest; import com.syjiaer.clinic.server.common.config.Config; import com.syjiaer.clinic.server.common.constants.Constants; @@ -105,11 +107,21 @@ public class ChargeService extends BaseService { public ChargeOrder save(ChargeSaveDto dto) { ChargeOrder dbOrder = chargeOrderMapper.selectById(dto.getId()); if (dbOrder != null) { - //清除已有的订单 + //编辑 清除已有的订单 chargeItemListMapper.delete(new QueryWrapper().eq("charge_order_code", dbOrder.getCode())); chargeGoodsListMapper.delete(new QueryWrapper().eq("charge_order_code", dbOrder.getCode())); - chargeOrderMapper.deleteById(dbOrder.getId()); } + QueryWrapper listWrapper = new QueryWrapper<>(); + listWrapper.eq("diagnosis_code", dto.getDiagnosisMedicalRecord().getDiagnosisCode()); + listWrapper.eq("status",RetailOrderStatusEnum.FINISHED.getCode()); + List dbList = chargeOrderMapper.selectList(listWrapper); + if (!dbList.isEmpty()){ + throw new MessageException("该诊断已完成收费"); + } + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("diagnosis_code", dto.getDiagnosisMedicalRecord().getDiagnosisCode()); + queryWrapper.eq("status",RetailOrderStatusEnum.UNFINISHED.getCode()); + chargeOrderMapper.delete(queryWrapper); ManagerUser user = getManagerUser(); String code = StringUtil.getCode("CO"); @@ -352,7 +364,7 @@ public class ChargeService extends BaseService { /** * 医保预支付 */ - public void socialPrePay(String changeOrderCode, String mdtrtCertType, String mdtrtCertNO, String insutype) { + public OM2206A socialPrePay(String changeOrderCode, String mdtrtCertType, String mdtrtCertNO, String insutype) { ChargeOrder order = chargeOrderMapper.selectByCode(changeOrderCode); Diagnosis diagnosis = diagnosisMapper.selectByCode(order.getDiagnosisCode()); @@ -373,11 +385,11 @@ public class ChargeService extends BaseService { IM2206A.ExpContent expContent = new IM2206A.ExpContent(); data.setExp_content(expContent); im2206A.setData(data); - socialRequest.call2206A(im2206A); + return socialRequest.call2206A(im2206A); } - public void socialRealPay(String changeOrderCode, String mdtrtCertType, String mdtrtCertNO, String insutype) { + public OM2207A socialRealPay(String changeOrderCode, String mdtrtCertType, String mdtrtCertNO, String insutype) { ChargeOrder order = chargeOrderMapper.selectByCode(changeOrderCode); Diagnosis diagnosis = diagnosisMapper.selectByCode(order.getDiagnosisCode()); @@ -398,7 +410,7 @@ public class ChargeService extends BaseService { IM2207A.ExpContent expContent = new IM2207A.ExpContent(); data.setExp_content(expContent); im2207A.setData(data); - socialRequest.call2207A(im2207A); + return socialRequest.call2207A(im2207A); } diff --git a/src/main/java/com/syjiaer/clinic/server/service/diagnosis/MedicalRecordService.java b/src/main/java/com/syjiaer/clinic/server/service/diagnosis/MedicalRecordService.java index c21c058..f00d225 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/diagnosis/MedicalRecordService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/diagnosis/MedicalRecordService.java @@ -94,6 +94,12 @@ public class MedicalRecordService extends BaseService { patientRegistrationMapper.updateById(updateRegis); //诊断主表 Diagnosis diagnosis = new Diagnosis(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("registration_id", saveDto.getRegistrationId()); + Diagnosis dbDiagnosis = diagnosisMapper.selectOne(queryWrapper); + if (dbDiagnosis!=null){ + diagnosis.setId(dbDiagnosis.getId()); + } String code = StringUtil.getCode("ZD"); LocalDateTime now = LocalDateTime.now(); BeanUtils.copyProperties(saveDto, diagnosis);