From 7016488a613325acbe9a392381906f791580f3a0 Mon Sep 17 00:00:00 2001 From: LiJianZhao Date: Thu, 24 Apr 2025 16:22:54 +0800 Subject: [PATCH] dev --- .gitignore | 1 + .../server/common/api/input/IM2206A.java | 64 ++++++++++++++++ .../server/common/api/input/IM2207A.java | 74 +++++++++++++++++++ .../server/common/api/input/IM9001.java | 23 ++++++ .../common/api/request/SocialRequest.java | 12 +++ .../mapper/social/SocialItemMapper.java | 5 ++ .../server/service/charge/ChargeService.java | 68 ++++++++++++++++- .../service/social/SocialItemService.java | 32 +++++--- .../clinic/server/ServerApplicationTests.java | 29 ++++++-- 9 files changed, 290 insertions(+), 18 deletions(-) create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/input/IM2206A.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/input/IM2207A.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/input/IM9001.java diff --git a/.gitignore b/.gitignore index 549e00a..5fb1603 100644 --- a/.gitignore +++ b/.gitignore @@ -28,6 +28,7 @@ target/ build/ !**/src/main/**/build/ !**/src/test/**/build/ +test_json ### VS Code ### .vscode/ diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/input/IM2206A.java b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM2206A.java new file mode 100644 index 0000000..7968af1 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM2206A.java @@ -0,0 +1,64 @@ +package com.syjiaer.clinic.server.common.api.input; + +import com.syjiaer.clinic.server.common.api.annotations.IMField; +import lombok.Data; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; +import org.apache.ibatis.annotations.Select; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class IM2206A extends BaseInputModel{ + @IMField(key = "data", name = "数据", required = true) + private Data data; + + @Getter + @Setter + public static class Data{ + @IMField(key = "psn_no", name = "人员编号", required = true) + private String psn_no; + @IMField(key = "mdtrt_cert_type", name = "就诊凭证类型", required = true) + private String mdtrt_cert_type; + @IMField(key = "mdtrt_cert_no", name = "就诊凭证编号", required = true) + private String mdtrt_cert_no; + @IMField(key = "med_type", name = "医疗类别", required = true) + private String med_type; + @IMField(key = "medfee_sumamt", name = "医疗费总额", required = true) + private BigDecimal medfee_sumamt; + @IMField(key = "psn_setlway", name = "个人结算方式", required = true) + private String psn_setlway; + @IMField(key = "mdtrt_id", name = "就诊ID", required = true) + private String mdtrt_id; + @IMField(key = "chrg_bchno", name = "收费批次号", required = true) + private String chrg_bchno; + @IMField(key = "acct_used_flag", name = "个人账户使用标志", required = true) + private String acct_used_flag; + @IMField(key = "insutype", name = "险种类型", required = true) + private String insutype; + @IMField(key = "exp_content", name = "字段扩展") + private ExpContent exp_content; + } + @Getter + @Setter + public static class ExpContent{ + @IMField(key = "dise_reim_mon", name = "规定病种报销月份") + private String dise_reim_mon; + @IMField(key = "deve_flag", name = "开发商标志") + private String deve_flag; + @IMField(key = "otp_reim_flag", name = "门诊报销标志") + private String otp_reim_flag; + @IMField(key = "birctrl_falg", name = "生育门诊和计划生育门诊患者标识") + private String birctrl_falg; + @IMField(key = "otp_mulaid_used_flag", name = "门诊共济使用标志") + private String otp_mulaid_used_flag; + } + +} diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/input/IM2207A.java b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM2207A.java new file mode 100644 index 0000000..bcf4dfd --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM2207A.java @@ -0,0 +1,74 @@ +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; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class IM2207A extends BaseInputModel{ + @IMField(key = "data", name = "数据", required = true) + private Data data; + + @Getter + @Setter + public static class Data{ + @IMField(key = "psn_no", name = "人员编号", required = true) + private String psn_no; + @IMField(key = "mdtrt_cert_type", name = "就诊凭证类型", required = true) + private String mdtrt_cert_type; + @IMField(key = "mdtrt_cert_no", name = "就诊凭证编号", required = true) + private String mdtrt_cert_no; + @IMField(key = "med_type", name = "医疗类别", required = true) + private String med_type; + @IMField(key = "medfee_sumamt", name = "医疗费总额", required = true) + private BigDecimal medfee_sumamt; + @IMField(key = "psn_setlway", name = "个人结算方式", required = true) + private String psn_setlway; + @IMField(key = "mdtrt_id", name = "就诊ID", required = true) + private String mdtrt_id; + @IMField(key = "chrg_bchno", name = "收费批次号", required = true) + private String chrg_bchno; + @IMField(key = "insutype", name = "险种类型", required = true) + private String insutype; + @IMField(key = "acct_used_flag", name = "个人账户使用标志", required = true) + private String acct_used_flag; + @IMField(key = "invono", name = "发票号") + private String invono; + @IMField(key = "fulamt_ownpay_amt", name = "全自费金额") + private BigDecimal fulamt_ownpay_amt; + @IMField(key = "overlmt_selfpay", name = "超限价金额") + private BigDecimal overlmt_selfpay; + @IMField(key = "preselfpay_amt", name = "先行自付金额") + private BigDecimal preselfpay_amt; + @IMField(key = "inscp_scp_amt", name = "符合政策范围金额") + private BigDecimal inscp_scp_amt; + @IMField(key = "exp_content", name = "字段扩展") + private ExpContent exp_content; + @IMField(key = "minpacunt_drug_trac_cnt", name = "本次结算应上传最小包装药品追溯码数量") + private BigDecimal minpacunt_drug_trac_cnt; + @IMField(key = "mcs_trac_cnt", name = "本次结算应上传耗材追溯码数量") + private BigDecimal mcs_trac_cnt; + } + @Getter + @Setter + public static class ExpContent{ + @IMField(key = "dise_reim_mon", name = "规定病种报销月份") + private String dise_reim_mon; + @IMField(key = "deve_flag", name = "开发商标志") + private String deve_flag; + @IMField(key = "otp_reim_flag", name = "门诊报销标志") + private String otp_reim_flag; + @IMField(key = "birctrl_falg", name = "生育门诊和计划生育门诊患者标识") + private String birctrl_falg; + @IMField(key = "otp_mulaid_used_flag", name = "门诊共济使用标志") + private String otp_mulaid_used_flag; + } + +} diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/input/IM9001.java b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM9001.java new file mode 100644 index 0000000..c3dde35 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM9001.java @@ -0,0 +1,23 @@ +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; +import java.util.Date; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class IM9001 extends BaseInputModel{ + @IMField(key = "opter_no", name = "操作员编号", required = true) + private String opter_no; + @IMField(key = "mac", name = "签到MAC地址", required = true) + private String mac; + @IMField(key = "ip", name = "签到IP地址", required = true) + private String ip; +} \ 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 c5e308a..e26216b 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 @@ -173,4 +173,16 @@ public class SocialRequest { public void call2204(IM2204 im2204) { httpUtil.call("2204", im2204.buildToMap()); } + + public void call2206A(IM2206A im2206A) { + httpUtil.call("2206A",im2206A.buildToMap()); + } + + public void call2207A(IM2207A im2207A) { + httpUtil.call("2207A",im2207A.buildToMap()); + } + + public void call9001(IM9001 im9001){ + httpUtil.call("9001","signIn",im9001.buildToMap()); + } } 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 57ceafc..ab222c2 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 @@ -1,7 +1,12 @@ package com.syjiaer.clinic.server.mapper.social; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.syjiaer.clinic.server.entity.social.SocialDirectory; 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}") + 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 8aeae30..e6a60f8 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,7 +2,10 @@ package com.syjiaer.clinic.server.service.charge; 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.request.SocialRequest; +import com.syjiaer.clinic.server.common.config.Config; import com.syjiaer.clinic.server.common.constants.Constants; import com.syjiaer.clinic.server.common.enums.InventorySocialTypeEnum; import com.syjiaer.clinic.server.common.enums.InventoryTypeEnum; @@ -27,6 +30,7 @@ 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.entity.social.SocialDirectory; +import com.syjiaer.clinic.server.entity.social.SocialItem; import com.syjiaer.clinic.server.mapper.charge.ChargeGoodsListMapper; import com.syjiaer.clinic.server.mapper.charge.ChargeItemListMapper; import com.syjiaer.clinic.server.mapper.charge.ChargeOrderMapper; @@ -40,6 +44,7 @@ import com.syjiaer.clinic.server.mapper.organization.OrganizationSectionMapper; import com.syjiaer.clinic.server.mapper.patient.PatientInfoMapper; import com.syjiaer.clinic.server.mapper.patient.PatientRegistrationMapper; import com.syjiaer.clinic.server.mapper.social.SocialDirectoryMapper; +import com.syjiaer.clinic.server.mapper.social.SocialItemMapper; import com.syjiaer.clinic.server.service.BaseService; import com.syjiaer.clinic.server.service.inventory.InventoryService; import com.syjiaer.clinic.server.service.patient.PatientRegistrationService; @@ -80,11 +85,15 @@ public class ChargeService extends BaseService { @Autowired private SocialDirectoryMapper socialDirectoryMapper; @Autowired + private SocialItemMapper socialItemMapper; + @Autowired private InventoryService inventoryService; @Autowired private InventoryLogMapper inventoryLogMapper; @Autowired private SocialRequest socialRequest; + @Autowired + private Config config; @Transactional(rollbackFor = Exception.class) @@ -303,9 +312,9 @@ public class ChargeService extends BaseService { feedetail.setRx_circ_flag("0"); feedetail.setFee_ocur_time(LocalDateTime.now()); Item item = itemMapper.selectById(itemList.getServiceId()); - SocialDirectory sdGoods = socialDirectoryMapper.getByCode(item.getItemSocialCode()); - feedetail.setMed_list_codg(sdGoods.getCode()); - feedetail.setMedins_list_codg(sdGoods.getId()); + SocialItem sdGoods = socialItemMapper.getByCode(item.getItemSocialCode()); + feedetail.setMed_list_codg(sdGoods.getSocialCode()); + feedetail.setMedins_list_codg(String.valueOf(sdGoods.getId())); BigDecimal totalPrice = itemList.getUnitPrice().multiply(new BigDecimal(itemList.getNumber())); feedetail.setDet_item_fee_sumamt(totalPrice); feedetail.setCnt(new BigDecimal(itemList.getNumber())); @@ -323,4 +332,57 @@ public class ChargeService extends BaseService { } + /** + * 医保预支付 + */ + public void socialPrePay(String changeOrderCode,String mdtrtCertType,String mdtrtCertNO,String insutype){ + ChargeOrder order = chargeOrderMapper.selectByCode(changeOrderCode); + Diagnosis diagnosis = diagnosisMapper.selectByCode(order.getDiagnosisCode()); + + PatientRegistration registration = patientRegistrationMapper.selectById(diagnosis.getRegistrationId()); + + IM2206A im2206A = new IM2206A(); + IM2206A.Data data = new IM2206A.Data(); + data.setPsn_no(registration.getPsnNo()); + data.setMdtrt_cert_type(mdtrtCertType); + data.setMdtrt_cert_no(mdtrtCertNO); + data.setMed_type("12"); + data.setMedfee_sumamt(order.getTotalPrice()); + data.setPsn_setlway("01"); + data.setMdtrt_id(registration.getMdtrtId()); + data.setChrg_bchno(order.getCode()); + data.setAcct_used_flag("1"); + data.setInsutype(insutype); + IM2206A.ExpContent expContent = new IM2206A.ExpContent(); + data.setExp_content(expContent); + im2206A.setData(data); + socialRequest.call2206A(im2206A); + + } + + public void socialRealPay(String changeOrderCode,String mdtrtCertType,String mdtrtCertNO,String insutype){ + ChargeOrder order = chargeOrderMapper.selectByCode(changeOrderCode); + Diagnosis diagnosis = diagnosisMapper.selectByCode(order.getDiagnosisCode()); + + PatientRegistration registration = patientRegistrationMapper.selectById(diagnosis.getRegistrationId()); + + IM2207A im2207A = new IM2207A(); + IM2207A.Data data = new IM2207A.Data(); + data.setPsn_no(registration.getPsnNo()); + data.setMdtrt_cert_type(mdtrtCertType); + data.setMdtrt_cert_no(mdtrtCertNO); + data.setMed_type("12"); + data.setMedfee_sumamt(order.getTotalPrice()); + data.setPsn_setlway("01"); + data.setMdtrt_id(registration.getMdtrtId()); + data.setChrg_bchno(order.getCode()); + data.setAcct_used_flag("1"); + data.setInsutype(insutype); + IM2207A.ExpContent expContent = new IM2207A.ExpContent(); + data.setExp_content(expContent); + im2207A.setData(data); + socialRequest.call2207A(im2207A); + + } + } diff --git a/src/main/java/com/syjiaer/clinic/server/service/social/SocialItemService.java b/src/main/java/com/syjiaer/clinic/server/service/social/SocialItemService.java index 6d09db1..8c4ab64 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/social/SocialItemService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/social/SocialItemService.java @@ -32,12 +32,14 @@ public class SocialItemService { @Autowired private SocialDirectoryVersionService socialDirectoryVersionService; - public String download(int type, String version_name) { - List tab_list = httpUtil.download(version_name, type); + public String download( String version_name) { + List tab_list = httpUtil.download(version_name, 1305); List list = new ArrayList<>(); - String value = String.valueOf(type); + String value = String.valueOf(1305); List codeList = new ArrayList<>(); - for (String[] line_array : tab_list) { + String next_version_name=""; + for (int i=0;i queryWrapper = new QueryWrapper<>(); - queryWrapper.in("social_code", codeList); - socialItemMapper.delete(queryWrapper); + socialDirectoryVersionService.setSocialDirectoryVersion(1305, version_name, next_version_name, list.size()); + if(list.isEmpty()){ + return next_version_name; + } + if(!codeList.isEmpty()){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("social_code", codeList); + socialItemMapper.delete(queryWrapper); + } + socialItemMapper.insert(list, 100); - socialDirectoryVersionService.setSocialDirectoryVersion(type, version_name, list.get(0).getVersionName(), list.size()); - return list.get(0).getVersionName(); + + return next_version_name; } } diff --git a/src/test/java/com/syjiaer/clinic/server/ServerApplicationTests.java b/src/test/java/com/syjiaer/clinic/server/ServerApplicationTests.java index 6233cca..8178f78 100644 --- a/src/test/java/com/syjiaer/clinic/server/ServerApplicationTests.java +++ b/src/test/java/com/syjiaer/clinic/server/ServerApplicationTests.java @@ -1,9 +1,12 @@ package com.syjiaer.clinic.server; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.syjiaer.clinic.server.common.api.input.IM9001; +import com.syjiaer.clinic.server.common.api.request.SocialRequest; import com.syjiaer.clinic.server.service.charge.ChargeService; import com.syjiaer.clinic.server.service.diagnosis.MedicalRecordService; import com.syjiaer.clinic.server.service.social.SocialDiagnoseService; +import com.syjiaer.clinic.server.service.social.SocialItemService; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @@ -16,15 +19,31 @@ class ServerApplicationTests { @Autowired private SocialDiagnoseService socialDiagnoseService; @Autowired + private SocialItemService socialItemService; + @Autowired private ChargeService chargeService; + @Autowired + private SocialRequest socialRequest; @Test void contextLoads() { -// medicalRecordService.uploadDiagnosis("ZD20250424105340459612"); - - -// socialDiagnoseService.download("0"); - chargeService.uploadCostDetails("CO20250424125949820609"); + chargeService.uploadCostDetails("CO20250424130233778296"); + String meCode = "AD1537643"; + String medType = "03"; + String in = "310"; + chargeService.socialPrePay("CO20250424130233778296",medType,meCode,"310"); } + @Test + void text(){ + IM9001 im9001 = new IM9001(); + im9001.setOpter_no("0"); + im9001.setMac("00-FF-F2-10-61-2D"); + im9001.setIp("10.42.131.10"); + socialRequest.call9001(im9001); + } + @Test + void test(){ + socialItemService.download("F002_20210915000001_A"); + } }