接口开发和数据接口修复

This commit is contained in:
huzhengkao 2025-06-13 17:28:08 +08:00
parent 6b6538d3a8
commit 6fe7696da9
13 changed files with 349 additions and 341 deletions

View File

@ -0,0 +1,41 @@
package com.alihealth.d2d.provtest.controller;
import cn.hutool.db.PageResult;
import com.alihealth.d2d.provtest.common.AjaxResult;
import com.alihealth.d2d.provtest.domain.vo.EnterpriseScanCode;
import com.alihealth.d2d.provtest.service.IDataStatisticsService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.Map;
/**
* @author Jason 数据统计
* @date 2025年06月13日 11:30:09
*/
@RestController
@RequestMapping("dataStatistics")
public class DataStatisticsController {
@Autowired
private IDataStatisticsService dataStatisticsService;
@GetMapping("/enterprise/scanCode")
public AjaxResult pageScanCode(
@RequestParam(defaultValue = "1") Integer current,
@RequestParam(defaultValue = "10") Integer size,
@RequestParam(required = false) String name,
@RequestParam(required = false) String socialCreditCode,
@RequestParam(required = false) String type) {
Page<EnterpriseScanCode> page = new Page<>(current, size);
Page<EnterpriseScanCode> result = dataStatisticsService.pageScanCode(page, name, socialCreditCode,type);
return AjaxResult.success(result);
}
}

View File

@ -1,209 +0,0 @@
package com.alihealth.d2d.provtest.domain;
import com.alihealth.d2d.provtest.utils.LocalDateDeserializer;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
/**
* <p>
* 药品经营企业基本信息数据子集
* </p>
*
* @author Jason
* @since 2025-06-06
*/
@Getter
@Setter
@TableName("pharmaceutical_trading_enterprises")
public class PharmaceuticalTradingEnterprises implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 事件流水号
*/
private String eventId;
/**
* 统一社会信用代码
*/
@JacksonXmlProperty(localName = "TYSHXYDM")
private String tyshxydm;
/**
* 企业名称
*/
@JacksonXmlProperty(localName = "QYMC")
private String qymc;
/**
* 企业类型
*/
@JacksonXmlProperty(localName = "QYLX")
private String qylx;
/**
* 企业小类
*/
@JacksonXmlProperty(localName = "QYXL")
private String qyxl;
/**
* 住所地址
*/
@JacksonXmlProperty(localName = "ZSDZ")
private String zsdz;
/**
* 住所地址- 国家或地区
*/
@JacksonXmlProperty(localName = "ZSDZGJHDQ")
private String zsdzgjhdq;
/**
* 住所地址- 直辖市/自治区
*/
@JacksonXmlProperty(localName = "ZSDZSZXSZZQ")
private String zsdzszxszzq;
/**
* 住所地址- /自治州/
*/
@JacksonXmlProperty(localName = "ZSDZSQZZZM")
private String zsdzsqzzzm;
/**
* 住所地址- 自治县/县级市
*/
@JacksonXmlProperty(localName = "ZSDZXZZXXJS")
private String zsdzxzzxxjs;
/**
* 住所地址-/街道办事处
*/
@JacksonXmlProperty(localName = "ZSDZXZJDBSC")
private String zsdzxzjdbsc;
/**
* 住所地址-// 弄等
*/
@JacksonXmlProperty(localName = "ZSDZCJLLD")
private String zsdzcjlld;
/**
* 住所地址-门牌号码
*/
@JacksonXmlProperty(localName = "ZSDZMPHM")
private String zsdzmphm;
/**
* 法定代表人
*/
@JacksonXmlProperty(localName = "FDDBR")
private String fddbr;
/**
* 注册资本
*/
@JacksonXmlProperty(localName = "ZCZB")
private String zczb;
/**
* 成立日期
*/
@JacksonXmlProperty(localName = "CLRQ")
@JsonDeserialize(using = LocalDateDeserializer.class)
private LocalDate clrq;
/**
* 营业期限
*/
@JacksonXmlProperty(localName = "YYQX")
private String yyqx;
/**
* 经营范围
*/
@JacksonXmlProperty(localName = "JYFW")
private String jyfw;
/**
* 登记机关
*/
@JacksonXmlProperty(localName = "DJJG")
private String djjg;
/**
* 固定电话号码
*/
@JacksonXmlProperty(localName = "GDDHHM")
private String gddhhm;
/**
* 传真号码
*/
@JacksonXmlProperty(localName = "CZHM")
private String czhm;
/**
* 电子信箱
*/
@JacksonXmlProperty(localName = "DZXX")
private String dzxx;
/**
* 企业网址
*/
@JacksonXmlProperty(localName = "QYWZ")
private String qywz;
/**
* 联系人
*/
@JacksonXmlProperty(localName = "LXR")
private String lxr;
/**
* 联系电话
*/
@JacksonXmlProperty(localName = "LXDH")
private String lxdh;
/**
* 暂无
*/
@JacksonXmlProperty(localName = "ZSGPS")
private String zsgps;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新时间
*/
private LocalDateTime updateTime;
/**
* 是否删除(0- 1-)
*/
private Integer isDeleted;
}

View File

@ -1,12 +1,19 @@
package com.alihealth.d2d.provtest.domain;
import com.alihealth.d2d.provtest.utils.LocalDateDeserializer;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
import lombok.Builder;
import lombok.Data;
import javax.persistence.Column;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
/**
@ -17,99 +24,188 @@ import java.util.Date;
*/
@SuppressWarnings("serial")
@Data
@Builder
@TableName("pharmaceutical_trading_enterprises_base_info")
public class PharmaceuticalTradingEnterprisesBaseInfo {
//主键ID
@JacksonXmlRootElement(localName = "data")
public class PharmaceuticalTradingEnterprisesBaseInfo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
//事件流水号
@Column(name = "event_id")
/**
* 事件流水号
*/
private String eventId;
//统一社会信用代码
@Column(name = "tyshxydm")
/**
* 统一社会信用代码
*/
@JacksonXmlProperty(localName = "TYSHXYDM")
private String tyshxydm;
//企业名称
@Column(name = "qymc")
/**
* 企业名称
*/
@JacksonXmlProperty(localName = "QYMC")
private String qymc;
//企业类型
@Column(name = "qylx")
/**
* 企业类型
*/
@JacksonXmlProperty(localName = "QYLX")
private String qylx;
//企业小类
@Column(name = "qyxl")
/**
* 企业小类
*/
@JacksonXmlProperty(localName = "QYXL")
private String qyxl;
//住所地址
@Column(name = "zsdz")
/**
* 住所地址
*/
@JacksonXmlProperty(localName = "ZSDZ")
private String zsdz;
//住所地址- 国家或地区
@Column(name = "zsdzgjhdq")
/**
* 住所地址- 国家或地区
*/
@JacksonXmlProperty(localName = "ZSDZGJHDQ")
private String zsdzgjhdq;
//住所地址- 直辖市/自治区
@Column(name = "zsdzszxszzq")
/**
* 住所地址- 直辖市/自治区
*/
@JacksonXmlProperty(localName = "ZSDZSZXSZZQ")
private String zsdzszxszzq;
//住所地址- /自治州/
@Column(name = "zsdzsqzzzm")
/**
* 住所地址- /自治州/
*/
@JacksonXmlProperty(localName = "ZSDZSQZZZM")
private String zsdzsqzzzm;
//住所地址- 自治县/县级市
@Column(name = "zsdzxzzxxjs")
/**
* 住所地址- 自治县/县级市
*/
@JacksonXmlProperty(localName = "ZSDZXZZXXJS")
private String zsdzxzzxxjs;
//住所地址-/街道办事处
@Column(name = "zsdzxzjdbsc")
/**
* 住所地址-/街道办事处
*/
@JacksonXmlProperty(localName = "ZSDZXZJDBSC")
private String zsdzxzjdbsc;
//住所地址-// 弄等
@Column(name = "zsdzcjlld")
/**
* 住所地址-// 弄等
*/
@JacksonXmlProperty(localName = "ZSDZCJLLD")
private String zsdzcjlld;
//住所地址-门牌号码
@Column(name = "zsdzmphm")
/**
* 住所地址-门牌号码
*/
@JacksonXmlProperty(localName = "ZSDZMPHM")
private String zsdzmphm;
//法定代表人
@Column(name = "fddbr")
/**
* 法定代表人
*/
@JacksonXmlProperty(localName = "FDDBR")
private String fddbr;
//注册资本
@Column(name = "zczb")
/**
* 注册资本
*/
@JacksonXmlProperty(localName = "ZCZB")
private String zczb;
//成立日期
@Column(name = "clrq")
private Date clrq;
//营业期限
@Column(name = "yyqx")
/**
* 成立日期
*/
@JacksonXmlProperty(localName = "CLRQ")
@JsonDeserialize(using = LocalDateDeserializer.class)
private LocalDate clrq;
/**
* 营业期限
*/
@JacksonXmlProperty(localName = "YYQX")
private String yyqx;
//经营范围
@Column(name = "jyfw")
/**
* 经营范围
*/
@JacksonXmlProperty(localName = "JYFW")
private String jyfw;
//登记机关
@Column(name = "djjg")
/**
* 登记机关
*/
@JacksonXmlProperty(localName = "DJJG")
private String djjg;
//固定电话号码
@Column(name = "gddhhm")
/**
* 固定电话号码
*/
@JacksonXmlProperty(localName = "GDDHHM")
private String gddhhm;
//传真号码
@Column(name = "czhm")
/**
* 传真号码
*/
@JacksonXmlProperty(localName = "CZHM")
private String czhm;
//电子信箱
@Column(name = "dzxx")
/**
* 电子信箱
*/
@JacksonXmlProperty(localName = "DZXX")
private String dzxx;
//企业网址
@Column(name = "qywz")
/**
* 企业网址
*/
@JacksonXmlProperty(localName = "QYWZ")
private String qywz;
//联系人
@Column(name = "lxr")
/**
* 联系人
*/
@JacksonXmlProperty(localName = "LXR")
private String lxr;
//联系电话
@Column(name = "lxdh")
/**
* 联系电话
*/
@JacksonXmlProperty(localName = "LXDH")
private String lxdh;
//暂无
@Column(name = "zsgps")
/**
* 暂无
*/
@JacksonXmlProperty(localName = "ZSGPS")
private String zsgps;
//创建时间
@Column(name = "create_time")
private Date createTime;
//更新时间
@Column(name = "update_time")
private Date updateTime;
//是否删除(0- 1-)
@Column(name = "is_deleted")
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新时间
*/
private LocalDateTime updateTime;
/**
* 是否删除(0- 1-)
*/
private Integer isDeleted;
}

View File

@ -0,0 +1,31 @@
package com.alihealth.d2d.provtest.domain.vo;
import lombok.Data;
/**
* @author Jason 企业扫码统计实体类
* @date 2025年06月13日 11:39:59
*/
@Data
public class EnterpriseScanCode {
private String name;//企业名称
private String socialCreditCode;//社会信用代码
private String type;//企业类型
private Integer totalInbound;//累计入库扫码量
private Integer totalOutbound;//累计出库扫码量
private Integer weekInbound;//近一周入库扫码量
private Integer weekOutbound;//近一周出库扫码量
private Integer monthInbound;//近一月入库扫码量
private Integer monthOutbound;//近一月出库扫码量
private double scanRatio;//扫码比
}

View File

@ -0,0 +1,12 @@
package com.alihealth.d2d.provtest.mapper;
import com.alihealth.d2d.provtest.domain.vo.EnterpriseScanCode;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
/**
* @author Jason
* @date 2025年06月13日 15:47:54
*/
public interface DataStatisticsMapper {
Page<EnterpriseScanCode> pageScanCode(Page<EnterpriseScanCode> page, String name, String socialCreditCode, String type);
}

View File

@ -1,16 +0,0 @@
package com.alihealth.d2d.provtest.mapper;
import com.alihealth.d2d.provtest.domain.PharmaceuticalTradingEnterprises;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 药品经营企业基本信息数据子集 Mapper 接口
* </p>
*
* @author Jason
* @since 2025-06-06
*/
public interface PharmaceuticalTradingEnterprisesMapper extends BaseMapper<PharmaceuticalTradingEnterprises> {
}

View File

@ -0,0 +1,11 @@
package com.alihealth.d2d.provtest.service;
import com.alihealth.d2d.provtest.domain.vo.EnterpriseScanCode;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
/**
* 数据统计
*/
public interface IDataStatisticsService {
Page<EnterpriseScanCode> pageScanCode(Page<EnterpriseScanCode> page, String name, String socialCreditCode,String type);
}

View File

@ -1,16 +0,0 @@
package com.alihealth.d2d.provtest.service;
import com.alihealth.d2d.provtest.domain.PharmaceuticalTradingEnterprises;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 药品经营企业基本信息数据子集 服务类
* </p>
*
* @author Jason
* @since 2025-06-06
*/
public interface IPharmaceuticalTradingEnterprisesService extends IService<PharmaceuticalTradingEnterprises> {
}

View File

@ -1,11 +1,11 @@
package com.alihealth.d2d.provtest.service.handle.business;
import com.alihealth.d2d.provtest.domain.PharmaceuticalTradingEnterprises;
import com.alihealth.d2d.provtest.domain.PharmaceuticalTradingEnterprisesBaseInfo;
import com.alihealth.d2d.provtest.entity.EventBody;
import com.alihealth.d2d.provtest.entity.InstanceDetail;
import com.alihealth.d2d.provtest.entity.ItemDetail;
import com.alihealth.d2d.provtest.entity.VTTSBasic;
import com.alihealth.d2d.provtest.service.IPharmaceuticalTradingEnterprisesService;
import com.alihealth.d2d.provtest.service.IPharmaceuticalTradingEnterprisesBaseInfoService;
import com.alihealth.d2d.provtest.service.impl.XmlParserServiceImpl;
import com.alihealth.d2d.provtest.service.handle.AbstractEventDataHandler;
import com.alihealth.d2d.provtest.service.handle.EventSubType;
@ -23,27 +23,27 @@ import java.util.List;
*/
@Service
@EventSubType("1014")
public class SubType1014Handler extends AbstractEventDataHandler<PharmaceuticalTradingEnterprises> {
public class SubType1014Handler extends AbstractEventDataHandler<PharmaceuticalTradingEnterprisesBaseInfo> {
protected final Logger log = LoggerFactory.getLogger(getClass());
@Autowired
private IPharmaceuticalTradingEnterprisesService service;
private IPharmaceuticalTradingEnterprisesBaseInfoService service;
@Autowired
private XmlParserServiceImpl xmlParserServiceImpl;
@Override
protected Class<PharmaceuticalTradingEnterprises> getEntityClass() {
return PharmaceuticalTradingEnterprises.class;
protected Class<PharmaceuticalTradingEnterprisesBaseInfo> getEntityClass() {
return PharmaceuticalTradingEnterprisesBaseInfo.class;
}
@Override
protected IService<PharmaceuticalTradingEnterprises> getService() {
protected IService<PharmaceuticalTradingEnterprisesBaseInfo> getService() {
return service;
}
@Override
protected PharmaceuticalTradingEnterprises convertToEntity(EventBody eventBody, ItemDetail item, InstanceDetail instance) {
protected PharmaceuticalTradingEnterprisesBaseInfo convertToEntity(EventBody eventBody, ItemDetail item, InstanceDetail instance) {
return null;
}
@ -54,11 +54,11 @@ public class SubType1014Handler extends AbstractEventDataHandler<PharmaceuticalT
@Override
public void handleBase(String xml,String eventId) {
VTTSBasic<PharmaceuticalTradingEnterprises> result = xmlParserServiceImpl.parseDataXml(
VTTSBasic<PharmaceuticalTradingEnterprisesBaseInfo> result = xmlParserServiceImpl.parseDataXml(
xml,
PharmaceuticalTradingEnterprises.class
PharmaceuticalTradingEnterprisesBaseInfo.class
);
List<PharmaceuticalTradingEnterprises> list = result.getDataset();
List<PharmaceuticalTradingEnterprisesBaseInfo> list = result.getDataset();
if(list!=null && !list.isEmpty()){
list.stream()
.forEach(item -> {

View File

@ -0,0 +1,30 @@
package com.alihealth.d2d.provtest.service.impl;
import com.alihealth.d2d.provtest.domain.DomesticDrugBaseInfo;
import com.alihealth.d2d.provtest.domain.vo.EnterpriseScanCode;
import com.alihealth.d2d.provtest.mapper.DataStatisticsMapper;
import com.alihealth.d2d.provtest.mapper.DomesticDrugBaseInfoMapper;
import com.alihealth.d2d.provtest.service.IDataStatisticsService;
import com.alihealth.d2d.provtest.service.IDomesticDrugBaseInfoService;
import com.alihealth.d2d.provtest.utils.CertManager;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* @author Jason
* @date 2025年06月13日 15:35:30
*/
@Service
public class DataStatisticsServiceImpl implements IDataStatisticsService {
@Autowired
private DataStatisticsMapper mapper;
@Override
public Page<EnterpriseScanCode> pageScanCode(Page<EnterpriseScanCode> page, String name, String socialCreditCode, String type) {
return mapper.pageScanCode(page, name, socialCreditCode,type);
}
}

View File

@ -1,20 +0,0 @@
package com.alihealth.d2d.provtest.service.impl;
import com.alihealth.d2d.provtest.domain.PharmaceuticalTradingEnterprises;
import com.alihealth.d2d.provtest.mapper.PharmaceuticalTradingEnterprisesMapper;
import com.alihealth.d2d.provtest.service.IPharmaceuticalTradingEnterprisesService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 药品经营企业基本信息数据子集 服务实现类
* </p>
*
* @author Jason
* @since 2025-06-06
*/
@Service("pharmaceuticalTradingEnterprisesService")
public class PharmaceuticalTradingEnterprisesServiceImpl extends ServiceImpl<PharmaceuticalTradingEnterprisesMapper, PharmaceuticalTradingEnterprises> implements IPharmaceuticalTradingEnterprisesService {
}

View File

@ -0,0 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.alihealth.d2d.provtest.mapper.DataStatisticsMapper">
<select id="pageScanCode" resultType="com.alihealth.d2d.provtest.domain.vo.EnterpriseScanCode">
SELECT
sc.tyshxydm AS name,
sc.qymc AS socialCreditCode,
sc.qylx AS type,
IFNULL(i.total_inbound, 0) AS totalInbound,
IFNULL(o.total_outbound, 0) AS totalOutbound,
CASE
WHEN IFNULL(o.total_outbound, 0) = 0 THEN NULL
ELSE ROUND(IFNULL(i.total_inbound, 0) * 1.0 / IFNULL(o.total_outbound, 0), 2)
END AS scanRatio,
IFNULL(i.week_inbound, 0) AS weekInbound,
IFNULL(o.week_outbound, 0) AS weekOutbound,
IFNULL(i.month_inbound, 0) AS monthInbound,
IFNULL(o.month_outbound, 0) AS monthOutbound
FROM
(SELECT DISTINCT tyshxydm,qymc,qylx FROM pharmaceutical_trading_enterprises_base_info
<where>
<if test="name != null and name != ''">
AND qymc LIKE CONCAT('%', #{name}, '%')
</if>
<if test="socialCreditCode != null and socialCreditCode!=''">
AND tyshxydm = #{socialCreditCode}
</if>
<if test="type != null and type!=''">
AND qylx = #{type}
</if>
</where> ) sc
LEFT JOIN
(SELECT
tyshxydmshjg,
COUNT(DISTINCT ypzsm) AS total_inbound,
COUNT(DISTINCT CASE WHEN shsj >= DATE_SUB(NOW(), INTERVAL 7 DAY) THEN ypzsm END) AS week_inbound,
COUNT(DISTINCT CASE WHEN shsj >= DATE_SUB(NOW(), INTERVAL 30 DAY) THEN ypzsm END) AS month_inbound
FROM drug_delivery_note_apply_info
GROUP BY tyshxydmshjg) i
ON sc.tyshxydm = i.tyshxydmshjg
LEFT JOIN
(SELECT
tyshxydmfhjg,
COUNT(DISTINCT ypzsm) AS total_outbound,
COUNT(DISTINCT CASE WHEN fhsj >= DATE_SUB(NOW(), INTERVAL 7 DAY) THEN ypzsm END) AS week_outbound,
COUNT(DISTINCT CASE WHEN fhsj >= DATE_SUB(NOW(), INTERVAL 30 DAY) THEN ypzsm END) AS month_outbound
FROM drug_invoice_apply_info
GROUP BY tyshxydmfhjg) o
ON sc.tyshxydm = o.tyshxydmfhjg;
</select>
</mapper>

View File

@ -1,5 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.alihealth.d2d.provtest.mapper.PharmaceuticalTradingEnterprisesMapper">
</mapper>