From a1f5ed403a09f00dd89b8f4ff97ad0c4e40ea7db Mon Sep 17 00:00:00 2001 From: qiuyt Date: Mon, 7 Apr 2025 10:25:54 +0800 Subject: [PATCH] =?UTF-8?q?=E9=95=BF=E6=B3=B0=E4=B8=8A=E4=BC=A0=E5=8C=BB?= =?UTF-8?q?=E4=BF=9D=E8=BF=81=E7=A7=BB=20=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../glxp/mipsdl/client/yxfy/yxfyClient.java | 57 ++++++++++--------- .../mipsdl/controller/YbApiController.java | 10 ++-- .../mipsdl/dao/yb/YbUploadingLogMapper.java | 9 +++ .../glxp/mipsdl/entity/yb/YbUploadingLog.java | 44 ++++++++++++++ .../com/glxp/mipsdl/service/yb/YbClient.java | 34 +++++++---- .../drugcabinet/YbUploadingLogMapper.xml | 17 ++++++ 6 files changed, 127 insertions(+), 44 deletions(-) create mode 100644 src/main/java/com/glxp/mipsdl/dao/yb/YbUploadingLogMapper.java create mode 100644 src/main/java/com/glxp/mipsdl/entity/yb/YbUploadingLog.java create mode 100644 src/main/resources/mybatis/mapper/master/drugcabinet/YbUploadingLogMapper.xml diff --git a/src/main/java/com/glxp/mipsdl/client/yxfy/yxfyClient.java b/src/main/java/com/glxp/mipsdl/client/yxfy/yxfyClient.java index 4eb5bdc..bfb1f22 100644 --- a/src/main/java/com/glxp/mipsdl/client/yxfy/yxfyClient.java +++ b/src/main/java/com/glxp/mipsdl/client/yxfy/yxfyClient.java @@ -2069,18 +2069,15 @@ public class yxfyClient extends CommonHttpClient { // log.error("stoout_no===",stoout_no); List list = vYpzsPresInfoMapper .selectList( - new QueryWrapper().eq("STOOUT_NO",ioCollectOrder.getBillNo()) + new QueryWrapper().eq("PRESCRIBE_NUMBER",ioCollectOrder.getBillNo()) ); if ( CollUtil.isNotEmpty(list)) { String stoout_no = list.get(0).getSTOOUT_NO(); - log.error("stoout_no==="+stoout_no); List vInsurNationGoodsPhysics = goodsPhysicMapper.selectList(new LambdaQueryWrapper().eq(VInsurNationGoodsPhysic::getSTOOUT_NO, stoout_no)); - log.error("vInsurNationGoodsPhysics==="+vInsurNationGoodsPhysics); if ( CollUtil.isNotEmpty(vInsurNationGoodsPhysics)) { List collectOrderBizResponseList = ioCollectOrder.getCollectOrderBizResponseList(); - log.error("collectOrderBizResponseList==="+collectOrderBizResponseList); List xsck3505Requests = new ArrayList<>(); for (CollectOrderBizResponse collectOrderBizResponse : collectOrderBizResponseList) { @@ -2092,6 +2089,8 @@ public class yxfyClient extends CommonHttpClient { if(StringUtils.isNotEmpty(collectOrderBizResponse.getFinishUdiCode())){ codes = collectOrderBizResponse.getFinishUdiCode().split(","); + }else { + collectOrderBizResponse.setTrdnFlag("0"); } List drugTraceList = new ArrayList<>(); // 遍历fruits数组 @@ -2108,7 +2107,6 @@ public class yxfyClient extends CommonHttpClient { } } } - log.error("vInsurNationGoodsPhysic==="+vInsurNationGoodsPhysic); // 医保自费类型 if(StringUtils.isEmpty(vInsurNationGoodsPhysic.getMDTRT_SETL_TYPE()) || !"1".equals(vInsurNationGoodsPhysic.getMDTRT_SETL_TYPE())){ vInsurNationGoodsPhysic.setMDTRT_SETL_TYPE("2"); @@ -2143,7 +2141,7 @@ public class yxfyClient extends CommonHttpClient { .manu_date(vInsurNationGoodsPhysic.getMANU_DATE()) .expy_end(vInsurNationGoodsPhysic.getEXPY_END()) .rx_flag(vInsurNationGoodsPhysic.getRX_FLAG()) - .trdn_flag(vInsurNationGoodsPhysic.getTRDN_FLAG()) + .trdn_flag(collectOrderBizResponse.getTrdnFlag()) .finl_trns_pric(vInsurNationGoodsPhysic.getFINL_TRNS_PRIC()) .rxno(vInsurNationGoodsPhysic.getRXNO()) .rx_circ_flag(vInsurNationGoodsPhysic.getRX_CIRC_FLAG()) @@ -2158,7 +2156,6 @@ public class yxfyClient extends CommonHttpClient { .memo(vInsurNationGoodsPhysic.getMEMO()) .mdtrt_setl_type(vInsurNationGoodsPhysic.getMDTRT_SETL_TYPE()) .drugtracinfo(drugTraceList).build(); - log.error("xsck3505Request==="+xsck3505Request); xsck3505Requests.add(xsck3505Request); } @@ -2168,7 +2165,7 @@ public class yxfyClient extends CommonHttpClient { baseXsck3505Request.setSelinfoDetail(xsck3505Requests); String jsonStr = JSONUtil.toJsonStr(baseXsck3505Request); JSONObject dataJson = JSONObject.parseObject(jsonStr); - return ybClient.ybPost("3505A", dataJson); + return ybClient.ybPost("3505A", dataJson,ioCollectOrder.getBillNo()); } }else { return ResultVOUtils.error(500,"上传医保数据为空请核实"); @@ -2233,6 +2230,9 @@ public class yxfyClient extends CommonHttpClient { //todo 处方药标志先写死 后面要商量怎么获得 String rxFlag ="1"; log.error("optionUploadCollectOrder35051===item==="+item); + if(org.apache.commons.lang3.StringUtils.isEmpty(item.getBatchNo())){ + item.setBatchNo("null"); + } Xsck35051Request xsck35051Request = Xsck35051Request.builder() .med_list_codg(item.getYbbm()) .fixmedins_hilist_id(item.getNameCode()) @@ -2279,7 +2279,7 @@ public class yxfyClient extends CommonHttpClient { baseXsck35051Request.setSelinfoDetail(xsck35051Requests); String jsonStr = JSONUtil.toJsonStr(baseXsck35051Request); JSONObject dataJson = JSONObject.parseObject(jsonStr); - return ybClient.ybPost("35051", dataJson); + return ybClient.ybPost("35051", dataJson,ioCollectOrder.getBillNo()); } else { return ResultVOUtils.error(500, "上传医保数据为空请核实"); } @@ -2334,7 +2334,7 @@ public class yxfyClient extends CommonHttpClient { basePcsc3501Request.setSelinfoDetail(pcsc3501Requests); String jsonStr = JSONUtil.toJsonStr(basePcsc3501Request); JSONObject dataJson = JSONObject.parseObject(jsonStr); - ybClient.ybPost("3501A", dataJson); + ybClient.ybPost("3501A", dataJson,ioCollectOrder.getBillNo()); } } @@ -2352,15 +2352,15 @@ public class yxfyClient extends CommonHttpClient { // if (item.getYbbm().equals(itemCode)) { String[] codes = item.getFinishUdiCode().split(","); String nameCode = item.getNameCode(); - BasicProductsEntity basicProductsEntity = basicProductsDao.selectOne( - new QueryWrapper().eq("nameCode", nameCode).last("limit 1") + BasicProductsEntity basicProductsEntity = basicProductsDao.selectOne( + new QueryWrapper().eq("nameCode",nameCode).last("limit 1") ); - if (Objects.isNull(basicProductsEntity)) { - return ResultVOUtils.error(500, "产品为空请检查"); + if(Objects.isNull(basicProductsEntity)){ + return ResultVOUtils.error(500,"产品为空请检查"); } Integer packLevel = Integer.valueOf(basicProductsEntity.getPackLevel()); List drugTraceList = new ArrayList<>(); - List codeList = new ArrayList<>(); + List codeList = new ArrayList<>(); // 遍历fruits数组 for (String code : codes) { if (StrUtil.isNotBlank(code)) { @@ -2373,8 +2373,8 @@ public class yxfyClient extends CommonHttpClient { } // 级别为2的产品码不可能只有一个 - if (packLevel > 1 && codeList.size() < 2) { - return ResultVOUtils.error(500, "大包装码关联关系拉取不到请检查" + code); + if(packLevel >1 && codeList.size() <2){ + return ResultVOUtils.error(500,"大包装码关联关系拉取不到请检查"+code); } } } @@ -2385,24 +2385,24 @@ public class yxfyClient extends CommonHttpClient { drugTraceList.add(request); } - if (CollUtil.isEmpty(drugTraceList)) { - return ResultVOUtils.error(500, "单据要传的码为空请检查"); + if(CollUtil.isEmpty(drugTraceList)){ + return ResultVOUtils.error(500,"单据要传的码为空请检查"); } + // TODO: 2024/9/10 字段未完全正确对应 Kcbg3502Request kcbg3502Request = Kcbg3502Request.builder() .med_list_codg(item.getYbbm()) .inv_chg_type("108") .fixmedins_hilist_id(item.getThrCode()) .fixmedins_hilist_name(item.getCpmctymc()) - .fixmedins_bchno(item.getOrderIdFk()) - // TODO: 价格和数量可以不填 -// .pric("0") -// .cnt(item.getActCount()) + .fixmedins_bchno("0000") + .pric("0") + .cnt(item.getActCount()) .rx_flag("1") .inv_chg_time(item.getUpdateTime()) .inv_chg_opter_name(ioCollectOrder.getCreateUser()) .memo(item.getRemark()) - .trdn_flag(item.getTrdnFlag()) + .trdn_flag("0") .drugtracinfo(drugTraceList).build(); kcbg3502Requests.add(kcbg3502Request); // } @@ -2412,12 +2412,13 @@ public class yxfyClient extends CommonHttpClient { baseKcbg3502Request.setInvinfoDetail(kcbg3502Requests); String jsonStr = JSONUtil.toJsonStr(baseKcbg3502Request); JSONObject dataJson = JSONObject.parseObject(jsonStr); - return ybClient.ybPost("3502A", dataJson); - } else { - return ResultVOUtils.error(500, "上传医保数据为空请核实"); + return ybClient.ybPost("3502A", dataJson,ioCollectOrder.getBillNo()); + }else { + return ResultVOUtils.error(500,"上传医保数据为空请核实"); } } + public void optionUploadCollectOrder3506(IoCollectOrder ioCollectOrder) { // List bizList = ioCollectOrder.getBizList(); List collectOrderBizResponseList = ioCollectOrder.getCollectOrderBizResponseList(); @@ -2484,7 +2485,7 @@ public class yxfyClient extends CommonHttpClient { baseXsth3506Request.setSelinfoDetail(xsth3506Requests); String jsonStr = JSONUtil.toJsonStr(baseXsth3506Request); JSONObject dataJson = JSONObject.parseObject(jsonStr); - ybClient.ybPost("3506A", dataJson); + ybClient.ybPost("3506A", dataJson,ioCollectOrder.getBillNo()); } /** diff --git a/src/main/java/com/glxp/mipsdl/controller/YbApiController.java b/src/main/java/com/glxp/mipsdl/controller/YbApiController.java index 8f2ab2d..a9eab02 100644 --- a/src/main/java/com/glxp/mipsdl/controller/YbApiController.java +++ b/src/main/java/com/glxp/mipsdl/controller/YbApiController.java @@ -47,7 +47,7 @@ public class YbApiController { String jsonStr = JSONUtil.toJsonStr(baseYljg1201Request); log.error("【1201】医药机构信息获取请求参数:" + jsonStr); JSONObject dataJson = JSONObject.parseObject(jsonStr); - return ResultVOUtils.success(ybClient.ybPost("1201", dataJson)); + return ResultVOUtils.success(ybClient.ybPost("1201", dataJson,null)); } @@ -59,7 +59,7 @@ public class YbApiController { String jsonStr = JSONUtil.toJsonStr(dictRequest.getData()); log.error("【1301】通用字典下载接口请求参数:" + jsonStr); JSONObject dataJson = JSONObject.parseObject(jsonStr); - return ResultVOUtils.success(ybClient.ybPost(dictRequest.getApiCode(), dataJson)); + return ResultVOUtils.success(ybClient.ybPost(dictRequest.getApiCode(), dataJson,null)); } @@ -71,7 +71,7 @@ public class YbApiController { String jsonStr = JSONUtil.toJsonStr(dictRequest.getOrder()); JSONObject dataJson = JSONObject.parseObject(jsonStr); // JSONArray jsonObject = dataJson.getJSONArray("selinfoDetail"); - return ResultVOUtils.success(ybClient.ybPost(dictRequest.getApiCode(), dataJson)); + return ResultVOUtils.success(ybClient.ybPost(dictRequest.getApiCode(), dataJson,null)); } @@ -86,7 +86,7 @@ public class YbApiController { String jsonStr = JSONUtil.toJsonStr(baseYbRequest); log.error("【9001】医药机构信息获取请求参数:" + jsonStr); JSONObject dataJson = JSONObject.parseObject(jsonStr); - return ResultVOUtils.success(ybClient.ybPost("9001", dataJson)); + return ResultVOUtils.success(ybClient.ybPost("9001", dataJson,null)); } @PostMapping("/udiwms/erp/yb/test") @@ -213,7 +213,7 @@ public class YbApiController { baseXsck3505Request.setSelinfoDetail(xsck3505Requests); String jsonStr = JSONUtil.toJsonStr(baseXsck3505Request); JSONObject dataJson = JSONObject.parseObject(jsonStr); - ybClient.ybPost("3505A", dataJson); + ybClient.ybPost("3505A", dataJson,ioCollectOrder.getBillNo()); } } } diff --git a/src/main/java/com/glxp/mipsdl/dao/yb/YbUploadingLogMapper.java b/src/main/java/com/glxp/mipsdl/dao/yb/YbUploadingLogMapper.java new file mode 100644 index 0000000..050b9df --- /dev/null +++ b/src/main/java/com/glxp/mipsdl/dao/yb/YbUploadingLogMapper.java @@ -0,0 +1,9 @@ +package com.glxp.mipsdl.dao.yb; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.glxp.mipsdl.entity.yb.YbUploadingLog; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface YbUploadingLogMapper extends BaseMapper { +} \ No newline at end of file diff --git a/src/main/java/com/glxp/mipsdl/entity/yb/YbUploadingLog.java b/src/main/java/com/glxp/mipsdl/entity/yb/YbUploadingLog.java new file mode 100644 index 0000000..a4879f2 --- /dev/null +++ b/src/main/java/com/glxp/mipsdl/entity/yb/YbUploadingLog.java @@ -0,0 +1,44 @@ +package com.glxp.mipsdl.entity.yb; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName(value = "yb_uploading_log") +public class YbUploadingLog { + @TableId(value = "id", type = IdType.INPUT) + private Integer id; + + /** + * 医保入参 + */ + @TableField(value = "ybParam") + private String ybParam; + + /** + * 医保返回 + */ + @TableField(value = "ybReturn") + private String ybReturn; + + /** + * 单据号 + */ + @TableField(value = "billNo") + private String billNo; + /** + * 医保接口号 + */ + @TableField(value = "apiNo") + private String apiNo; + /** + * 更新时间 + */ + @TableField(value = "updateTime") + private Date updateTime; +} diff --git a/src/main/java/com/glxp/mipsdl/service/yb/YbClient.java b/src/main/java/com/glxp/mipsdl/service/yb/YbClient.java index a9c5459..91c8798 100644 --- a/src/main/java/com/glxp/mipsdl/service/yb/YbClient.java +++ b/src/main/java/com/glxp/mipsdl/service/yb/YbClient.java @@ -12,8 +12,10 @@ import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.glxp.mipsdl.dao.yb.YbUploadingLogMapper; import com.glxp.mipsdl.entity.system.ThrYbSetup; import com.glxp.mipsdl.entity.system.ThrYbSetupMapper; +import com.glxp.mipsdl.entity.yb.YbUploadingLog; import com.glxp.mipsdl.res.BaseResponse; import com.glxp.mipsdl.service.basic.RelCodeDetailService; import com.glxp.mipsdl.service.system.ThrYbSetupService; @@ -38,16 +40,9 @@ public class YbClient { @Resource ThrYbSetupMapper thrYbSetupMapper; @Resource - RelCodeDetailService relCodeDetailService; + YbUploadingLogMapper ybUploadingLogMapper; - /** - * 易联众 - * - * @param apiNo - * @param data - * @return - */ - public BaseResponse ybPost(String apiNo, JSONObject data) { + public BaseResponse ybPost(String apiNo, JSONObject data,String billNo) { // log.info("[" + apiNo + "]医保接口请求参数:" + data); ThrYbSetup thrYbSetup = thrYbSetupService.getSetUp(); @@ -58,6 +53,9 @@ public class YbClient { SignTypeEnum signType = SignTypeEnum.SM3; EncryptionModeEnum encType = EncryptionModeEnum.SM4; String msgId = thrYbSetup.getFixmedins_code() + DateUtil.formatYbDateTime(new Date()) + thrYbSetup.getSequenceNum(); + String reqStr =null; + String respStr =null; + try { ZephyrMedicalClient client = new ZephyrMedicalClient(thrYbSetup.getUrl(), infno, thrYbSetup.getAppId(), thrYbSetup.getAppSecret(), @@ -75,9 +73,14 @@ public class YbClient { req.setInput(data); req.setSignNo(thrYbSetup.getSignNo()); - log.error("【" + apiNo + "】医保接口请求参数:" + JSONObject.toJSONString(req)); + reqStr =JSONObject.toJSONString(req); + + log.error("【" + apiNo + "】医保接口请求参数:" + reqStr); ChsMedicalResponse resp = client.execute(req); - log.error("【" + apiNo + "】医保接口返回结果:" + JSONObject.toJSONString(resp)); + respStr = JSONObject.toJSONString(resp); + + log.error("【" + apiNo + "】医保接口返回结果:" +respStr); + // ChsMedicalResponse resp = new ChsMedicalResponse(); if(resp.getIsSuccess() == true @@ -98,7 +101,16 @@ public class YbClient { return ResultVOUtils.error(500,"【" + apiNo + "】上传医保失败==="+resp.getErrMsg()); } catch (Exception e) { + respStr = e.getMessage(); return ResultVOUtils.error(500,"【" + apiNo + "】上传医保失败"+e.getMessage()); + }finally { + YbUploadingLog ybUploadingLog = new YbUploadingLog(); + ybUploadingLog.setYbParam(reqStr); + ybUploadingLog.setYbReturn(respStr); + ybUploadingLog.setBillNo(billNo); + ybUploadingLog.setApiNo(apiNo); + ybUploadingLog.setUpdateTime(new Date()); + ybUploadingLogMapper.insert(ybUploadingLog); } } diff --git a/src/main/resources/mybatis/mapper/master/drugcabinet/YbUploadingLogMapper.xml b/src/main/resources/mybatis/mapper/master/drugcabinet/YbUploadingLogMapper.xml new file mode 100644 index 0000000..11491bd --- /dev/null +++ b/src/main/resources/mybatis/mapper/master/drugcabinet/YbUploadingLogMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + id, ybParam, ybReturn, billNo, updateTime + +