From b48570bcc2b93e6df5f7faf621fdafbf604bb174 Mon Sep 17 00:00:00 2001 From: LiJianZhao Date: Fri, 16 May 2025 14:20:08 +0800 Subject: [PATCH] dev --- .../common/api/request/SocialRequest.java | 7 +- .../clinic/server/common/util/HttpUtil.java | 19 ++-- .../controller/charge/ChargeController.java | 2 +- .../entity/charge/ChargeSocialPayLog.java | 5 +- .../social/dto/ReconciliationItemDto.java | 5 +- .../server/service/charge/ChargeService.java | 2 + .../service/patient/PatientInfoService.java | 3 + .../social/SocialReconciliationService.java | 86 ++++++++++--------- 8 files changed, 74 insertions(+), 55 deletions(-) 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 cccd433..c573b21 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 @@ -188,7 +188,7 @@ public class SocialRequest { } public OM2207A call2207A(IM2207A im2207A) { - JSONObject data = httpUtil.callBackMsgId("2207A",im2207A.buildToMap()); + JSONObject data = httpUtil.callBackMsgId("2207A",im2207A.buildToMap(),10000); OM2207A om2207A=new OM2207A(); om2207A.setMsgId(data.get("msgid").toString()); om2207A.setSetlinfo(JSONObject.parseObject(data.get("setlinfo").toString(), OM2207A.Setlinfo.class)); @@ -227,7 +227,7 @@ public class SocialRequest { public void call3506(IM3506 im3506) { - httpUtil.callBackMsgId("3506", im3506.buildToMap()); + httpUtil.callBackMsgId("3506", im3506.buildToMap(),10000); } public void call2202(IM2202 im2202) { @@ -235,8 +235,9 @@ public class SocialRequest { } public OM2208 call2208(IM2208 im2208) { - JSONObject jsonObject = httpUtil.call("2208", "data", im2208.buildToMap(), 10000); + JSONObject jsonObject = httpUtil.callBackMsgId("2208", "data", im2208.buildToMap(), 10000); OM2208 om2208=new OM2208(); + om2208.setMsgId(jsonObject.get("msgid").toString()); om2208.setSetlinfo(JSONObject.parseObject(jsonObject.get("setlinfo").toString(), OM2208.Setlinfo.class)); om2208.setSetldetail(JSONArray.parseArray(jsonObject.get("setldetail").toString(), OM2208.Setldetail.class)); return om2208; diff --git a/src/main/java/com/syjiaer/clinic/server/common/util/HttpUtil.java b/src/main/java/com/syjiaer/clinic/server/common/util/HttpUtil.java index 9ba0fcc..41d4169 100644 --- a/src/main/java/com/syjiaer/clinic/server/common/util/HttpUtil.java +++ b/src/main/java/com/syjiaer/clinic/server/common/util/HttpUtil.java @@ -142,7 +142,7 @@ public class HttpUtil { logger.info("上个版本号:" + pre_version_name); JSONObject result = null; try { - result = callBackMsgId(infno, "data", input); + result = callBackMsgId(infno, "data", input,10000); } catch (Exception e) { return null; } @@ -217,19 +217,22 @@ public class HttpUtil { JSONObject output = post(config.get("social", "url"), JSON.toJSONString(getparms(infno, tag, input)),timeout); return output; } - public JSONObject callBackMsgId(String infno, Map input) { - Map parmsMap = getparms(infno, input); - String msgId =parmsMap.get("msgid").toString(); + public JSONObject callBackMsgId(String infno, Map input,int timeout) { + Map parmsMap = getparms(infno, input); + return callBackMsgIdDo(parmsMap); + } + public JSONObject callBackMsgId(String infno, String tag, Map input,int timeout) { + Map parmsMap = getparms(infno,tag, input); + return callBackMsgIdDo(parmsMap); + } + public JSONObject callBackMsgIdDo(Map parmsMap) { + String msgId =parmsMap.get("msgid").toString(); JSONObject output = post(config.get("social", "url"), JSON.toJSONString(parmsMap)); output.put("msgid",msgId); return output; } - public JSONObject callBackMsgId(String infno, String tag, Map input) { - JSONObject output = post(config.get("social", "url"), JSON.toJSONString(getparms(infno, tag, input))); - return output; - } public JSONObject callWithOutLog(String infno, String tag, Map input) { JSONObject output = post(config.get("social", "url"), JSON.toJSONString(getparms(infno, tag, input))); 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 64e7d94..61709ab 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 @@ -126,7 +126,7 @@ public class ChargeController extends BaseController { */ @RequestMapping("/refund") public Result refund() { - String changeOrderCode = parmsUtil.getString("changeOrderCode"); + String changeOrderCode = parmsUtil.getString("changeOrderCode","订单号为空"); chargeService.refund(changeOrderCode); return success(); } diff --git a/src/main/java/com/syjiaer/clinic/server/entity/charge/ChargeSocialPayLog.java b/src/main/java/com/syjiaer/clinic/server/entity/charge/ChargeSocialPayLog.java index 301fb61..7e1bd77 100644 --- a/src/main/java/com/syjiaer/clinic/server/entity/charge/ChargeSocialPayLog.java +++ b/src/main/java/com/syjiaer/clinic/server/entity/charge/ChargeSocialPayLog.java @@ -18,7 +18,7 @@ import lombok.experimental.Accessors; *

* * @author NiuZiYuan - * @since 2025-05-12 + * @since 2025-05-16 */ @Getter @Setter @@ -120,4 +120,7 @@ public class ChargeSocialPayLog implements Serializable { @ApiModelProperty("证件号码") private String certno; + + @ApiModelProperty("医疗费总额") + private BigDecimal medfeeSumamt; } diff --git a/src/main/java/com/syjiaer/clinic/server/entity/social/dto/ReconciliationItemDto.java b/src/main/java/com/syjiaer/clinic/server/entity/social/dto/ReconciliationItemDto.java index 59e0002..dd87bb1 100644 --- a/src/main/java/com/syjiaer/clinic/server/entity/social/dto/ReconciliationItemDto.java +++ b/src/main/java/com/syjiaer/clinic/server/entity/social/dto/ReconciliationItemDto.java @@ -5,6 +5,7 @@ import lombok.Setter; import java.math.BigDecimal; import java.time.LocalDate; +import java.time.LocalDateTime; @Getter @Setter @@ -26,8 +27,8 @@ public class ReconciliationItemDto { // 对账结果 private String reconciliationResult; //对账开始时间 - private LocalDate beginTime; + private LocalDateTime beginTime; //对账结束时间 - private LocalDate endTime; + private LocalDateTime endTime; } 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 dbfb035..a4577f6 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 @@ -820,6 +820,7 @@ public class ChargeService extends BaseService { socialPayLog.setMsgid(om2102A.getMsgId()); socialPayLog.setChargeType(ChargeTypeEnum.CHARGE.getChargeType()); socialPayLog.setOriginalBalc(setlinfo.getBalc().add(setlinfo.getAcct_pay())); + socialPayLog.setMedfeeSumamt(setlinfo.getMedfee_sumamt()); chargeSocialPayLogMapper.insert(socialPayLog); } @@ -859,6 +860,7 @@ public class ChargeService extends BaseService { socialPayLog.setMsgid(om2208.getMsgId()); socialPayLog.setChargeType(ChargeTypeEnum.REFUND.getChargeType()); socialPayLog.setOriginalBalc(setlinfo.getBalc().add(payLog.getAcctPay())); + socialPayLog.setMedfeeSumamt(setlinfo.getMedfee_sumamt()); chargeSocialPayLogMapper.insert(socialPayLog); } 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 c78492a..ca9fab5 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 @@ -136,6 +136,9 @@ public class PatientInfoService extends BaseService { } Integer beforeIntegral = patientInfo.getIntegralBalance(); Integer finalIntegral = beforeIntegral + addIntegral; + if (finalIntegral < 0){ + throw new MessageException("剩余积分积分不足"); + } PatientInfo updatePatient = new PatientInfo(); updatePatient.setId(patientId); updatePatient.setIntegralBalance(finalIntegral); diff --git a/src/main/java/com/syjiaer/clinic/server/service/social/SocialReconciliationService.java b/src/main/java/com/syjiaer/clinic/server/service/social/SocialReconciliationService.java index f4893c8..fd781fd 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/social/SocialReconciliationService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/social/SocialReconciliationService.java @@ -9,6 +9,7 @@ import com.syjiaer.clinic.server.common.api.output.OM3202; import com.syjiaer.clinic.server.common.api.output.OM9101; import com.syjiaer.clinic.server.common.api.request.SocialRequest; import com.syjiaer.clinic.server.common.config.Config; +import com.syjiaer.clinic.server.common.enums.ChargeTypeEnum; import com.syjiaer.clinic.server.common.exception.MessageException; import com.syjiaer.clinic.server.common.util.FileUtil; import com.syjiaer.clinic.server.common.util.HttpUtil; @@ -33,6 +34,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; + @Slf4j @Service public class SocialReconciliationService extends BaseService { @@ -48,35 +50,36 @@ public class SocialReconciliationService extends BaseService { private Config config; @Autowired private HttpUtil httpUtil; - public List getList(LocalDateTime beginTime, LocalDateTime endTime) { + + public List getList(LocalDateTime beginTime, LocalDateTime endTime) { QueryWrapper clrQuery = new QueryWrapper<>(); clrQuery.select("clr_type,insutype,clr_optins,count(0) as count"); - clrQuery.groupBy("clr_type","insutype","clr_optins"); - clrQuery.ge("setl_time",beginTime); - clrQuery.le("setl_time",endTime); - List> mapList = chargeSocialPayLogMapper.selectMaps(clrQuery); + clrQuery.groupBy("clr_type", "insutype", "clr_optins"); + clrQuery.ge("setl_time", beginTime); + clrQuery.le("setl_time", endTime); + List> mapList = chargeSocialPayLogMapper.selectMaps(clrQuery); List voList = new ArrayList<>(); - for (Map item : mapList){ - if (item.get("clr_type") == null || item.get("insutype") == null){ + for (Map item : mapList) { + if (item.get("clr_type") == null || item.get("insutype") == null) { continue; } String clr = item.get("clr_type").toString(); String insutype = item.get("insutype").toString(); String clr_optins = item.get("clr_optins") == null ? "" : item.get("clr_optins").toString(); QueryWrapper listQuery = new QueryWrapper<>(); - listQuery.eq("clr_type",clr); - listQuery.eq("insutype",insutype); - listQuery.eq("clr_optins",clr_optins); - listQuery.ge("setl_time",beginTime); - listQuery.le("setl_time",endTime); + listQuery.eq("clr_type", clr); + listQuery.eq("insutype", insutype); + listQuery.eq("clr_optins", clr_optins); + listQuery.ge("setl_time", beginTime); + listQuery.le("setl_time", endTime); List logs = chargeSocialPayLogMapper.selectList(listQuery); ReconciliationItemVo vo = new ReconciliationItemVo(); vo.setReconciliationType(clr); vo.setInsuranceType(insutype); vo.setHandlingInstitution(clr_optins); vo.setSettlementCount(logs.size()); - for (ChargeSocialPayLog log : logs){ - vo.setTotalMedicalCost(log.getPsnPartAmt().add(vo.getTotalMedicalCost())); + for (ChargeSocialPayLog log : logs) { + vo.setTotalMedicalCost(log.getMedfeeSumamt().add(vo.getTotalMedicalCost())); vo.setTotalFundPayment(log.getFundPaySumamt().add(vo.getTotalFundPayment())); vo.setTotalPersonalAccountPayment(log.getAcctPay().add(vo.getTotalPersonalAccountPayment())); } @@ -87,6 +90,7 @@ public class SocialReconciliationService extends BaseService { /** * 对总账 + * * @param dto * @return */ @@ -107,16 +111,17 @@ public class SocialReconciliationService extends BaseService { } /** - * 明显对账 + * 明细对账 + * * @param dto */ public List detailDo(ReconciliationItemDto dto) { QueryWrapper listQuery = new QueryWrapper<>(); - listQuery.eq("clr_type",dto.getReconciliationType()); - listQuery.eq("insutype",dto.getInsuranceType()); - listQuery.eq("clr_optins",dto.getHandlingInstitution()); - listQuery.ge("setl_time",dto.getBeginTime()); - listQuery.le("setl_time",dto.getEndTime()); + listQuery.eq("clr_type", dto.getReconciliationType()); + listQuery.eq("insutype", dto.getInsuranceType()); + listQuery.eq("clr_optins", dto.getHandlingInstitution()); + listQuery.ge("setl_time", dto.getBeginTime()); + listQuery.le("setl_time", dto.getEndTime()); List logs = chargeSocialPayLogMapper.selectList(listQuery); try { @@ -134,23 +139,26 @@ public class SocialReconciliationService extends BaseService { } //生成文件 FileWriter writer = new FileWriter(file); - for (ChargeSocialPayLog log : logs){ - //TODO 退费标志 + for (ChargeSocialPayLog log : logs) { + String refd_setl_flag = "0"; + if (ChargeTypeEnum.REFUND.getChargeType().equals(log.getChargeType())){ + refd_setl_flag = "1"; + } QueryWrapper orderQuery = new QueryWrapper<>(); - orderQuery.eq("code",log.getChargeOrderCode()); + orderQuery.eq("code", log.getChargeOrderCode()); orderQuery.last("limit 1"); ChargeOrder dbOrder = chargeOrderMapper.selectOne(orderQuery); - String line = log.getSetlId()+"\t"+log.getMdtrtId()+"\t"+ - log.getPsnNo()+"\t"+dbOrder.getTotalPrice()+"\t"+log.getFundPaySumamt()+"\t" +log.getAcctPay()+"\t" - +"0"+"\n"; + String line = log.getSetlId() + "\t" + log.getMdtrtId() + "\t" + + log.getPsnNo() + "\t" + log.getMedfeeSumamt() + "\t" + log.getFundPaySumamt() + "\t" + log.getAcctPay() + "\t" + + refd_setl_flag+ "\n"; writer.write(line); } writer.flush(); writer.close(); - log.info("对账明细文件创建成功,文件路径:"+filePath); + log.info("对账明细文件创建成功,文件路径:" + filePath); //压缩文件为zip包 - String zipPath = filePath.substring(0,filePath.lastIndexOf("."))+".zip"; - fileUtil.zipFiles(new String[]{filePath},zipPath); + String zipPath = filePath.substring(0, filePath.lastIndexOf(".")) + ".zip"; + fileUtil.zipFiles(new String[]{filePath}, zipPath); //上传文件 OM9101 om9101 = socialRequest.call9101(zipPath); //请求明细对账接口 @@ -170,16 +178,16 @@ public class SocialReconciliationService extends BaseService { Map input_dw = new HashMap<>(); String downloadFileName = om3202.getFilename(); input_dw.put("file_qury_no", om3202.getFile_qury_no()); - input_dw.put("fixmedins_code",config.get("social","fixmedinsCode") ); + input_dw.put("fixmedins_code", config.get("social", "fixmedinsCode")); input_dw.put("filename", om3202.getFilename()); String savePath = file.getParent(); //下载文件 - httpUtil.callToFile("9102", "fsDownloadIn", input_dw, savePath+"\\"+downloadFileName); + httpUtil.callToFile("9102", "fsDownloadIn", input_dw, savePath + "\\" + downloadFileName); //解析文件 - List unzip = fileUtil.unzip(savePath,downloadFileName); + List unzip = fileUtil.unzip(savePath, downloadFileName); List readToList = fileUtil.readToList(unzip); - List voList = new ArrayList<>(); - for (String s : readToList){ + List voList = new ArrayList<>(); + for (String s : readToList) { ReconciliationDetailVo vo = new ReconciliationDetailVo(); List sList = List.of(s.split("\t")); vo.setPsnNo(sList.get(0)); @@ -196,19 +204,17 @@ public class SocialReconciliationService extends BaseService { } return voList; - }catch (IOException io){ + } catch (IOException io) { log.error("创建文件失败"); throw new MessageException("创建文件失败"); - }catch (Exception e){ - log.error("未知错误",e); - throw new MessageException("未知错误"); } } /** * 测试明细对账 + * * @return */ public List testDetailDo() { @@ -216,8 +222,8 @@ public class SocialReconciliationService extends BaseService { String fileName = "FSI0000296920.zip"; List unzip = fileUtil.unzip(path, fileName); List readToList = fileUtil.readToList(unzip); - List voList = new ArrayList<>(); - for (String s : readToList){ + List voList = new ArrayList<>(); + for (String s : readToList) { ReconciliationDetailVo vo = new ReconciliationDetailVo(); List sList = List.of(s.split("\t")); vo.setPsnNo(sList.get(0));