This commit is contained in:
LiJianZhao 2025-04-27 17:05:41 +08:00
parent 2d9c1de4ce
commit d850c02785
7 changed files with 308 additions and 19 deletions

View File

@ -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> 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;
}
}

View File

@ -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> 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;
}
}

View File

@ -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){

View File

@ -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<Object> 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<Object> uploadCostDetails() {
String changeOrderCode = parmsUtil.getString("changeOrderCode");
chargeService.uploadCostDetails(changeOrderCode);
return success();
}
@RequestMapping("/socialPrePay")
public Result<Object> socialPrePay(){
public Result<OM2206A> 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<Object> socialRealPay(){
public Result<OM2207A> 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));
}
/**

View File

@ -6,7 +6,7 @@ import com.syjiaer.clinic.server.entity.social.SocialItem;
import org.apache.ibatis.annotations.Select;
public interface SocialItemMapper extends BaseMapper<SocialItem> {
@Select("select * from social_item where social_code = #{code}")
@Select("select * from social_item where code = #{code}")
SocialItem getByCode(String code);
}

View File

@ -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<ChargeItemList>().eq("charge_order_code", dbOrder.getCode()));
chargeGoodsListMapper.delete(new QueryWrapper<ChargeGoodsList>().eq("charge_order_code", dbOrder.getCode()));
chargeOrderMapper.deleteById(dbOrder.getId());
}
QueryWrapper<ChargeOrder> listWrapper = new QueryWrapper<>();
listWrapper.eq("diagnosis_code", dto.getDiagnosisMedicalRecord().getDiagnosisCode());
listWrapper.eq("status",RetailOrderStatusEnum.FINISHED.getCode());
List<ChargeOrder> dbList = chargeOrderMapper.selectList(listWrapper);
if (!dbList.isEmpty()){
throw new MessageException("该诊断已完成收费");
}
QueryWrapper<ChargeOrder> 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);
}

View File

@ -94,6 +94,12 @@ public class MedicalRecordService extends BaseService {
patientRegistrationMapper.updateById(updateRegis);
//诊断主表
Diagnosis diagnosis = new Diagnosis();
QueryWrapper<Diagnosis> 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);