代码调整

This commit is contained in:
daichao 2025-07-01 10:49:35 +08:00
parent d0cb7f11e9
commit c08ff946fe
17 changed files with 277 additions and 197 deletions

View File

@ -14,6 +14,36 @@ public class DrugDeliveryNoteInfoVO implements Serializable {
private static final long serialVersionUID = -6817830718249051422L;
/**
* 药品追溯码
*/
private String ypzsm;
/**
* 上一级包装药品追溯码
*/
private String syjbzypzsm;
/**
* 国家药品标识码
*/
private String gjypbsm;
/**
* 药品通用名称
*/
private String yptymc;
/**
* 收货机构名称
*/
private String shjgmc;
/**
* 统一社会信用代码收货机构
*/
private String tyshxydmshjg;
/**
* 收货时间
*/
@ -21,17 +51,19 @@ public class DrugDeliveryNoteInfoVO implements Serializable {
private Date shsj;
/**
* 收货公司社会信用代码
* 收货数量
*/
private String tyshxydmshjg;
private Integer shsl;
/**
* 收货公司名称
* 发货机构名称
*/
private String shjgmc;
private String fhjgmc;
/**
* 收货单号
* 统一社会信用代码发货机构
*/
private String shdbh;
private String tyshxydmfhjg;
}

View File

@ -14,16 +14,55 @@ public class DrugInvoiceInfoVO implements Serializable {
private static final long serialVersionUID = 6502538268319598412L;
/** 发货时间 */
/**
* 药品追溯码
*/
private String ypzsm;
/**
* 上一级包装药品追溯码
*/
private String syjbzypzsm;
/**
* 国家药品标识码
*/
private String gjypbsm;
/**
* 药品通用名称
*/
private String yptymc;
/**
* 发货机构名称
*/
private String fhjgmc;
/**
* 统一社会信用代码发货机构
*/
private String tyshxydmfhjg;
/**
* 发货时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date fhsj;
/** 发货公司社会信用代码 */
private String tyshxydmfhjg;
/**
* 发货数量
*/
private Integer fhsl;
/** 发货公司名称 */
private String fhjgmc;
/**
* 收货机构名称
*/
private String shjgmc;
/**
* 统一社会信用代码收货机构
*/
private String tyshxydmshjg;
/** 发货单号 */
private String fhdbh;
}

View File

@ -15,31 +15,19 @@ public class DrugProductionInfoVO implements Serializable {
private static final long serialVersionUID = 2214859259608999147L;
/**
* 药品生产日期
* 药品追溯码
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date scrq;
private String ypzsm;
/**
* 药品有效期截止日期
* 上一级包装药品追溯码
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date ymyxqjzrq;
private String syjbzypzsm;
/**
* 药品生产批号
* 国家药品标识码
*/
private String ypscph;
/**
* 药品生产企业信用代码
*/
private String tyshxydm;
/**
* 药品生产企业名称
*/
private String scqymc;
private String gjypbsm;
/**
* 药品通用名称
@ -47,59 +35,29 @@ public class DrugProductionInfoVO implements Serializable {
private String yptymc;
/**
* 药品商用名称中文
* 统一社会信用代码生产企业
*/
private String ypspmc;
private String tyshxydm;
/**
* 国家药品标识码
* 生产企业名称
*/
private String gjypbsm;
private String scqymc;
/**
* 药品本位码
*/
private String ypbwm;
/**
* 剂型
*/
private String jx;
/**
* 制剂规格
*/
private String zjgg;
/**
* 包装规格
*/
private String bzgg;
/**
* 包装转换比
*/
private Integer bzzhb;
/**
* 药品有效期
*/
private Integer ypyxq;
/**
* 药品有效期单位
*/
private String ypyxqdw;
/**
* 药品批准文号
*/
private String yppzwh;
/**
* 药品批准文号有效期
* 生产日期
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date yppzwhyxq;
private Date scrq;
/**
* 药品生产批号
*/
private String ypscph;
/**
* 生产数量
*/
private Integer scsl;
}

View File

@ -14,28 +14,58 @@ public class DrugRetailAndUseInfoVO implements Serializable {
private static final long serialVersionUID = 8169288349155391871L;
/** 售药时间 */
/**
* 药品追溯码
*/
private String ypzsm;
/**
* 上一级包装药品追溯码
*/
private String syjbzypzsm;
/**
* 国家药品标识码
*/
private String gjypbsm;
/**
* 药品通用名称
*/
private String yptymc;
/**
* 售药数量
*/
private Integer sysl;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
/** 售出时间 */
private Date scsj;
/** 购买人身份信息 */
/**
* 购买人身份信息
*/
private String gmrsfxx;
/** 购买人电话号码 */
/**
* 购买人电话号码
*/
private String gmrdhhm;
/** 互联网订单标识 */
/**
* 互联网订单标志
*/
private String hlwddbz;
/** 零售药店名称 */
/**
* 零售药店名称
*/
private String lsydmc;
/** 零售药店编号 */
private String lsdjbh;
/** 统一社会信用代码(零售药店) */
/**
* 统一社会信用代码零售药店
*/
private String tyshxydmlsyd;
/** 开方医师(非处方药没有该字段) */
private String kfys;
}

View File

@ -13,12 +13,17 @@ public class DrugRetraceVO implements Serializable {
/**
* 药品生产信息
*/
private DrugProductionInfoVO drugProductionInfoVO;
private List<DrugProductionInfoVO> drugProductionInfoVOList;
/**
* 药品发货单与收货单信息
* 药品发货单信息
*/
private List<DrugInvoiceAndDeliveryInfoVO> drugInvoiceAndDeliveryInfoVOList;
private List<DrugInvoiceInfoVO> drugInvoiceInfoVOList;
/**
* 收货单信息
*/
private List<DrugDeliveryNoteInfoVO> drugDeliveryNoteInfoVOList;
/**
* 药品零售与药品使用信息

View File

@ -63,4 +63,23 @@ public class ResolveTest {
return AjaxResult.success(true);
}
@PostMapping(value = "/resolve3")
public AjaxResult resolve3() throws NoSuchPaddingException, IllegalBlockSizeException, NoSuchAlgorithmException, InvalidKeySpecException, BadPaddingException, IOException, InvalidKeyException {
List<ReceiveDataLog> list = receiveDataLogService.list(new QueryWrapper<ReceiveDataLog>()
.lambda().eq(ReceiveDataLog::getEventId, "04bfe7514e444bd68458f71c147d0718")
);
String privateKey = certManager.getPrivateKey();
for (ReceiveDataLog receiveDataLog : list) {
String eventId = receiveDataLog.getEventId();
String de = certManager.testDecrypt(privateKey, receiveDataLog.getData());
String xml = StreamUtil.getUnStreamContent(de);
EventPojo eventPojo = new EventPojo();
eventPojo.setData(receiveDataLog.getData());
eventPojo.setSubType(receiveDataLog.getSubType());
processingService.processEvent(eventPojo, xml, eventId);
}
return AjaxResult.success(true);
}
}

View File

@ -5,12 +5,15 @@ import com.alihealth.d2d.provtest.domain.DomesticDrugProductionApplyInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface DomesticDrugProductionApplyInfoMapper extends BaseMapper<DomesticDrugProductionApplyInfo> {
/**
* 根据药品追溯码查询药品信息
*
* @param ypzsm
* @return
*/
DrugProductionInfoVO selectByYpzsm(@Param("ypzsm") String ypzsm);
List<DrugProductionInfoVO> selectByYpzsm(@Param("ypzsm") String ypzsm);
}

View File

@ -1,10 +1,12 @@
package com.alihealth.d2d.provtest.mapper;
import com.alihealth.d2d.provtest.VO.DrugProductionInfoVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.alihealth.d2d.provtest.domain.DrugImportApplyInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 药品进口信息数据子集(DrugImportApplyInfo)表数据库访问层
*
@ -16,6 +18,6 @@ public interface DrugImportApplyInfoMapper extends BaseMapper<DrugImportApplyInf
/*
* 根据药品追溯码查询药品生产信息
*/
DrugProductionInfoVO selectByYpzsm(@Param("ypzsm") String ypzsm);
List<DrugProductionInfoVO> selectByYpzsm(@Param("ypzsm") String ypzsm);
}

View File

@ -37,14 +37,14 @@ public abstract class AbstractEventDataHandler<T> implements EventDataHandler {
try {
entities.add(convertToEntity(eventBody, item, instance, eventId));
} catch (Exception e) {
log.error("转换实体失败", e);
log.error("转换实体失败{},对应的eventId是={}", e.getMessage(), eventId);
}
}
} else {
try {
entities.add(convertToEntity(eventBody, item, null, eventId));
} catch (Exception e) {
log.error("转换实体失败", e);
log.error("转换实体失败{},对应的eventId是={}", e.getMessage(), eventId);
}
}
@ -53,7 +53,7 @@ public abstract class AbstractEventDataHandler<T> implements EventDataHandler {
try {
entities.add(convertToEntity(eventBody, null, null, eventId));
} catch (Exception e) {
log.error("转换实体失败", e);
log.error("转换实体失败{},对应的eventId是={}", e.getMessage(), eventId);
}
}
}

View File

@ -44,14 +44,14 @@ public abstract class EventData2017Handler implements EventDataHandler {
try {
entities.add(convertToEntity(eventBody, item, instance, eventId));
} catch (Exception e) {
log.error("转换实体失败", e);
log.error("转换实体失败{},对应的eventId是={}", e.getMessage(), eventId);
}
}
} else {
try {
entities.add(convertToEntity(eventBody, item, null, eventId));
} catch (Exception e) {
log.error("转换实体失败", e);
log.error("转换实体失败{},对应的eventId是={}", e.getMessage(), eventId);
}
}
@ -60,7 +60,7 @@ public abstract class EventData2017Handler implements EventDataHandler {
try {
entities.add(convertToEntity(eventBody, null, null, eventId));
} catch (Exception e) {
log.error("转换实体失败", e);
log.error("转换实体失败{},对应的eventId是={}", e.getMessage(), eventId);
}
}
}

View File

@ -8,9 +8,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@Service("drugRetraceService")
public class DrugRetraceServiceImpl implements DrugRetraceService {
@ -35,47 +33,20 @@ public class DrugRetraceServiceImpl implements DrugRetraceService {
public DrugRetraceVO retrace(DrugRetraceSearcher searcher) {
DrugRetraceVO drugRetraceVO = new DrugRetraceVO();
//先查国内的要是国内没有查询到再查询国外的
DrugProductionInfoVO drugProductionInfoVO = domesticDrugProductionApplyInfoMapper.selectByYpzsm(searcher.getYpzsm());
if (Objects.isNull(drugProductionInfoVO)) {
drugProductionInfoVO = drugImportApplyInfoMapper.selectByYpzsm(searcher.getYpzsm());
List<DrugProductionInfoVO> drugProductionInfoVOList = domesticDrugProductionApplyInfoMapper.selectByYpzsm(searcher.getYpzsm());
if (CollectionUtils.isEmpty(drugProductionInfoVOList)) {
drugProductionInfoVOList = drugImportApplyInfoMapper.selectByYpzsm(searcher.getYpzsm());
}
// if (Objects.isNull(drugProductionInfoVO)) {
// throw new ServiceException("未查询到该药品!");
// }
drugRetraceVO.setDrugProductionInfoVO(drugProductionInfoVO);
//统一发货单与收货单并行排序
List<DrugInvoiceAndDeliveryInfoVO> drugInvoiceAndDeliveryInfoVOList = new ArrayList<>();
drugRetraceVO.setDrugProductionInfoVOList(drugProductionInfoVOList);
// 查询发货单
List<DrugInvoiceInfoVO> drugInvoiceInfoVOList = drugInvoiceApplyInfoMapper.selectByYpzsm(searcher.getYpzsm());
if (!CollectionUtils.isEmpty(drugInvoiceInfoVOList)) {
for (DrugInvoiceInfoVO drugInvoiceInfoVO : drugInvoiceInfoVOList) {
DrugInvoiceAndDeliveryInfoVO drugInvoiceAndDeliveryInfoVO = new DrugInvoiceAndDeliveryInfoVO();
drugInvoiceAndDeliveryInfoVO.setSj(drugInvoiceInfoVO.getFhsj());
drugInvoiceAndDeliveryInfoVO.setTyshxydm(drugInvoiceInfoVO.getTyshxydmfhjg());
drugInvoiceAndDeliveryInfoVO.setGsmc(drugInvoiceInfoVO.getFhjgmc());
drugInvoiceAndDeliveryInfoVO.setDdh(drugInvoiceInfoVO.getFhdbh());
drugInvoiceAndDeliveryInfoVO.setDjlx("invoice");
drugInvoiceAndDeliveryInfoVOList.add(drugInvoiceAndDeliveryInfoVO);
}
}
drugRetraceVO.setDrugInvoiceInfoVOList(drugInvoiceInfoVOList);
// 查询收货单
List<DrugDeliveryNoteInfoVO> drugDeliveryNoteInfoVOList = drugDeliveryNoteApplyInfoMapper.selectByYpzsm(searcher.getYpzsm());
if (!CollectionUtils.isEmpty(drugDeliveryNoteInfoVOList)) {
for (DrugDeliveryNoteInfoVO drugDeliveryNoteInfoVO : drugDeliveryNoteInfoVOList) {
DrugInvoiceAndDeliveryInfoVO drugInvoiceAndDeliveryInfoVO = new DrugInvoiceAndDeliveryInfoVO();
drugInvoiceAndDeliveryInfoVO.setSj(drugDeliveryNoteInfoVO.getShsj());
drugInvoiceAndDeliveryInfoVO.setTyshxydm(drugDeliveryNoteInfoVO.getTyshxydmshjg());
drugInvoiceAndDeliveryInfoVO.setGsmc(drugDeliveryNoteInfoVO.getShjgmc());
drugInvoiceAndDeliveryInfoVO.setDdh(drugDeliveryNoteInfoVO.getShdbh());
drugInvoiceAndDeliveryInfoVO.setDjlx("delivery");
drugInvoiceAndDeliveryInfoVOList.add(drugInvoiceAndDeliveryInfoVO);
}
}
if (!CollectionUtils.isEmpty(drugInvoiceAndDeliveryInfoVOList)) {
drugInvoiceAndDeliveryInfoVOList.sort((o1, o2) -> o1.getSj().compareTo(o2.getSj()));
}
drugRetraceVO.setDrugInvoiceAndDeliveryInfoVOList(drugInvoiceAndDeliveryInfoVOList);
drugRetraceVO.setDrugDeliveryNoteInfoVOList(drugDeliveryNoteInfoVOList);
// 查询零售及使用信息
List<DrugRetailAndUseInfoVO> drugRetailAndUseInfoVOList = drugRetailAndUseApplyInfoMapper.selectByYpzsm(searcher.getYpzsm());

View File

@ -5,6 +5,7 @@ import com.alihealth.d2d.provtest.factory.EventHandlerFactory;
import com.alihealth.d2d.provtest.service.handle.EventDataHandler;
import com.alihealth.d2d.provtest.utils.EventPojo;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
@ -14,6 +15,7 @@ import org.springframework.stereotype.Service;
*/
@Service("eventProcessingService")
@RequiredArgsConstructor
@Slf4j
public class EventProcessingServiceImpl {
private final XmlParserServiceImpl xmlParserServiceImpl;
@ -21,6 +23,7 @@ public class EventProcessingServiceImpl {
/**
* 解析xml并处理接收的事件
*
* @param eventPojo
* @param xml
* @param eventId
@ -36,7 +39,12 @@ public class EventProcessingServiceImpl {
throw new RuntimeException(e);
}
//处理数据时关联到外层的eventId,方便通过日志排查问题
try {
handler.handle(eventS, eventId);
} catch (Exception e) {
log.error("数据处理异常{},对应的eventId是={}", e.getMessage(), eventId);
}
} else {
handler.handleBase(xml, eventId);
}

View File

@ -6,25 +6,21 @@
<select id="selectByYpzsm" resultType="com.alihealth.d2d.provtest.VO.DrugProductionInfoVO">
SELECT yptymc,
ypspmc,
SELECT
ypzsm,
syjbzypzsm,
gjypbsm,
ypbwm,
jx,
zjgg,
bzgg,
bzzhb,
ypyxq,
ypyxqdw,
yppzwh,
yppzwhyxq,
scrq,
ymyxqjzrq,
ypscph,
yptymc,
tyshxydmscqy AS tyshxydm,
scqymc
FROM domestic_drug_production_apply_info
WHERE ypzsm = #{ypzsm}
scqymc,
scrq,
ypscph,
scsl
FROM
domestic_drug_production_apply_info
WHERE
ypzsm = #{ypzsm}
ORDER BY
scrq ASC
</select>
</mapper>

View File

@ -5,14 +5,22 @@
<select id="selectByYpzsm" resultType="com.alihealth.d2d.provtest.VO.DrugDeliveryNoteInfoVO">
SELECT
shsj,
tyshxydmshjg,
ypzsm,
syjbzypzsm,
gjypbsm,
yptymc,
shjgmc,
shdbh
tyshxydmshjg,
shsj,
shsl,
fhjgmc,
tyshxydmfhjg
FROM
drug_delivery_note_apply_info
WHERE
ypzsm = #{ypzsm}
ORDER BY
shsj ASC
</select>
</mapper>

View File

@ -4,26 +4,22 @@
<select id="selectByYpzsm" resultType="com.alihealth.d2d.provtest.VO.DrugProductionInfoVO">
SELECT yptymc,
ypspmc,
SELECT
ypzsm,
syjbzypzsm,
gjypbsm,
ypbwm,
jx,
zjgg,
bzgg,
bzzhb,
ypyxq,
ypyxqdw,
yppzwh,
yppzwhyxq,
scrq,
ypyxqjzrq,
ypscph,
yptymc,
tyshxydmjkypdlqy AS tyshxydm,
jkypdlqymc AS scqymc
FROM drug_import_apply_info
WHERE ypzsm = #{ypzsm}
jkypdlqymc AS scqymc,
scrq,
ypscph,
scsl
FROM
drug_import_apply_info
WHERE
ypzsm = #{ypzsm}
ORDER BY
scrq ASC
</select>
</mapper>

View File

@ -5,14 +5,22 @@
<select id="selectByYpzsm" resultType="com.alihealth.d2d.provtest.VO.DrugInvoiceInfoVO">
SELECT
fhsj,
tyshxydmfhjg,
ypzsm,
syjbzypzsm,
gjypbsm,
yptymc,
fhjgmc,
fhdbh
tyshxydmfhjg,
fhsj,
fhsl,
shjgmc,
tyshxydmshjg
FROM
drug_invoice_apply_info
WHERE
ypzsm = #{ypzsm}
ORDER BY
fhsj ASC
</select>
</mapper>

View File

@ -5,18 +5,23 @@
<select id="selectByYpzsm" resultType="com.alihealth.d2d.provtest.VO.DrugRetailAndUseInfoVO">
SELECT
ypzsm,
syjbzypzsm,
gjypbsm,
yptymc,
sysl,
scsj,
gmrsfxx,
gmrdhhm,
hlwddbz,
lsydmc,
lsdjbh,
tyshxydmlsyd,
kfys
tyshxydmlsyd
FROM
drug_retail_and_use_apply_info
WHERE
ypzsm = #{ypzsm}
ORDER BY
scsj ASC
</select>
<select id="queryByYpzsm" resultType="com.alihealth.d2d.provtest.VO.DrugRetailAndUseApplyInfoVO">