feat: 添加下载平台调用封存病历rpc接口,封存病历根据封存id进行pacs报告采集

docus-active-query-service_1.3
wyb 2 years ago
parent 9bf13c717c
commit b12558f233

@ -0,0 +1,53 @@
package com.docus.bgts.controller;
import com.docus.bgts.entity.CommonResult;
import com.docus.bgts.facade.IAfCollectTaskService;
import com.docus.bgts.facade.IBgtsService;
import com.docus.bgts.service.CheckIntegrityService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* @author YongBin Wen
* @date 2024/1/11 9:42
*/
@Api(value = "封存病案报告采集接口", tags = "封存病案报告采集接口")
@RestController
@RequestMapping("/seal/collect")
@Slf4j
public class SealReportCollectController {
@Autowired
CheckIntegrityService checkIntegrityService;
@Autowired
IBgtsService bgtsService;
@Autowired
IAfCollectTaskService afCollectTaskService;
@ApiOperation("封存病案Pacs采集接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "sealId", value = "t_seal 的seal_id,封存id", required = true, dataTypeClass = String.class),
})
@GetMapping("/pacs")
public CommonResult<String> collectSealPacs(@RequestParam("sealId") String sealId) {
log.info("封存病案采集pacs病历,封存id为{}", sealId);
try {
bgtsService.collectSealPacs(sealId);
log.info("封存病案采集pacs病历,封存id:{} 采集完成", sealId);
return CommonResult.success("采集完成");
} catch (Exception e) {
log.error("封存id" + sealId + " 封存病案采集pacs病历出现异常", e);
return CommonResult.failed(e.getMessage());
}
}
}

@ -0,0 +1,46 @@
package com.docus.bgts.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
*
*
* @author WYBDEV
*/
@Data
@ApiModel(value = "患者基础信息")
public class TBasic {
@ApiModelProperty(value = "病案主键")
private String patientId;
@ApiModelProperty(value = "住院号")
private String inpatientNo;
@ApiModelProperty(value = "住院次数")
private Integer admissTimes;
@ApiModelProperty(value = "入院日期 yyyy-MM-dd HH:mm:ss")
private Date admissDate;
@ApiModelProperty(value = "入院科室名称")
private String admissDeptName;
@ApiModelProperty(value = "出院日期 yyyy-MM-dd HH:mm:ss")
private Date disDate;
@ApiModelProperty(value = "出院科室名称")
private String disDeptName;
@ApiModelProperty(value = "记账号")
private String jzh;
@ApiModelProperty(value = "姓名")
private String name;
@ApiModelProperty(value = "住院id")
private String admissId;
@ApiModelProperty(value = "省中医患者主索引号")
private String empId;
// @ApiModelProperty(value = "省中医患者记账号")
// private String accountRegistration;
public TBasic() {
}
}

@ -0,0 +1,60 @@
package com.docus.bgts.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @author jiashi
* @since 2023-05-16
*/
@Data
@ApiModel(value="TSeal对象", description="在院封存")
public class TSeal implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "在院封存病案主键")
private String patientId;
@ApiModelProperty(value = "封存id")
private String sealId;
@ApiModelProperty(value = "住院号")
private String inpatientNo;
@ApiModelProperty(value = "住院就诊号")
private String jzh;
@ApiModelProperty(value = "患者姓名")
private String name;
@ApiModelProperty(value = "住院时间")
private Date admissDate;
@ApiModelProperty(value = "封存时间")
private Date sealDate;
@ApiModelProperty(value = "文件来源")
private Integer fileSource;
@ApiModelProperty(value = "就诊次数")
private Integer admissTimes;
@ApiModelProperty(value = "纸质是否签名 0否 1是")
private Integer signinfo;
@ApiModelProperty(value = "备注")
private String remark;
public TSeal() {
}
}

@ -3,9 +3,9 @@ package com.docus.bgts.facade;
import com.baomidou.mybatisplus.extension.service.IService;
import com.docus.bgts.entity.AfCollectTask;
import com.docus.bgts.entity.ReportDownDto;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.RequestParam;
import com.docus.bgts.entity.TBasic;
import com.docus.bgts.entity.TSeal;
import com.docus.bgts.rpc.dto.ReportDownDto;
import java.util.List;
import java.util.Map;
@ -77,4 +77,23 @@ public interface IAfCollectTaskService extends IService<AfCollectTask> {
* @return
*/
List<Map> getCompleteIntegrity(List<String> jzhs);
/**
*
*
* @param seal
* @return com.docus.server.collect.entity.TSeal
* @date 2024/1/10 16:52
* @author YongBin Wen
*/
TSeal findSealByCondition(TSeal seal);
/**
* from `docus_medicalrecord`.`t_basic`
*
* @param tBasic
* @return
*/
List<TBasic> getBasicInfo(TBasic tBasic);
}

@ -8,6 +8,15 @@ public interface IBgtsService {
void collectPacs(String empId,String admissDate,String disDate,String times) throws Exception;
/**
* idpacs
* @date 2024/1/11 10:27
* @author YongBin Wen
* @param sealId id
*/
void collectSealPacs(String sealId) throws Exception;
void collectEcg(String empId,String admissDate,String disDate,String times) throws Exception;
void collectPacss();
@ -34,4 +43,6 @@ public interface IBgtsService {
*
*/
void timerCollect();
}

@ -4,6 +4,8 @@ package com.docus.bgts.mapper.dbmysql;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.docus.bgts.entity.AfCollectTask;
import com.docus.bgts.entity.JzhListSync;
import com.docus.bgts.entity.TBasic;
import com.docus.bgts.entity.TSeal;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.RequestParam;
@ -66,4 +68,22 @@ public interface AfCollectTaskMapper extends BaseMapper<AfCollectTask> {
* @return
*/
List<JzhListSync> selectListByJzhs(@Param("jzhs") List<String> jzhs);
/**
*
*
* @param seal
* @return com.docus.server.collect.entity.TSeal
* @date 2024/1/10 16:52
* @author YongBin Wen
*/
TSeal findSealByCondition(@Param("seal") TSeal seal);
/**
* from `docus_medicalrecord`.`t_basic`
*
* @param tBasic
* @return
*/
List<TBasic> getBasicInfo(@Param("basic") TBasic tBasic);
}

@ -0,0 +1,31 @@
package com.docus.bgts.rpc;
import com.docus.bgts.entity.CommonResult;
import com.docus.bgts.rpc.dto.ReportDownDto;
import org.springframework.web.bind.annotation.RequestBody;
/**
*
* @author YongBin Wen
* @date 2024/1/11 10:01
*/
public interface DownloadPlatformRpc {
/**
* ()
* @date 2024/1/11 10:05
* @author YongBin Wen
* @param resources
* @return
*/
CommonResult report(@RequestBody ReportDownDto resources);
/**
* (使)
* @date 2024/1/11 10:22
* @author YongBin Wen
* @param resources
* @return
*/
CommonResult sealReport(@RequestBody ReportDownDto resources);
}

@ -1,4 +1,4 @@
package com.docus.bgts.entity;
package com.docus.bgts.rpc.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

@ -1,4 +1,4 @@
package com.docus.bgts.entity;
package com.docus.bgts.rpc.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -8,7 +8,9 @@ public class ReportDownPatientDto {
@ApiModelProperty(value = "记帐号")
private String jzh;
@ApiModelProperty(value = "住院号")
private String inPatientNo;
private String inpatientno;
@ApiModelProperty(value = "住院次数")
private String visitId;
private String admisstimes;
@ApiModelProperty(value = "病案主键如有传则使用无则使用jzh")
private String patientid;
}

@ -1,4 +1,4 @@
package com.docus.bgts.entity;
package com.docus.bgts.rpc.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

@ -0,0 +1,58 @@
package com.docus.bgts.rpc.impl;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
import com.docus.bgts.entity.CommonResult;
import com.docus.bgts.rpc.DownloadPlatformRpc;
import com.docus.bgts.rpc.dto.ReportDownDto;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.UUID;
/**
*
*
* @author YongBin Wen
* @date 2024/1/11 10:02
*/
@Service
@Slf4j
public class DownloadPlatformRpcImpl implements DownloadPlatformRpc {
@Value("${docus.downloadPlatformAddress}")
private String downloadPlatformAddress;
@Override
public CommonResult report(ReportDownDto resources) {
String contextId = UUID.randomUUID().toString();
String url = downloadPlatformAddress + "/api/downplatform/report";
String bodyParam = JSON.toJSONString(resources);
log.info("[{}] 上报病案文件到下载平台,地址:{} ,参数:{}", contextId, url, bodyParam);
try {
String resp = HttpUtil.post(url, bodyParam);
log.info("[{}] 上报病案文件到下载平台,返回内容:{}", contextId, resp);
return JSON.parseObject(resp, CommonResult.class);
} catch (Exception ex) {
log.error("[" + contextId + "] 上报病案文件到下载平台,出错啦!", ex);
throw ex;
}
}
@Override
public CommonResult sealReport(ReportDownDto resources) {
String contextId = UUID.randomUUID().toString();
String url = downloadPlatformAddress + "/api/downplatform/sealReport";
String bodyParam = JSON.toJSONString(resources);
log.info("[{}] 上报封存病案文件到下载平台,地址:{} ,参数:{}", contextId, url, bodyParam);
try {
String resp = HttpUtil.post(url, bodyParam);
log.info("[{}] 上报封存病案文件到下载平台,返回内容:{}", contextId, resp);
return JSON.parseObject(resp, CommonResult.class);
} catch (Exception ex) {
log.error("[" + contextId + "] 上报封存病案文件到下载平台,出错啦!", ex);
throw ex;
}
}
}

@ -1,6 +1,7 @@
package com.docus.bgts.service;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.docus.bgts.entity.*;
@ -9,11 +10,12 @@ import com.docus.bgts.mapper.dbmysql.AfCollectTaskMapper;
import com.docus.bgts.mapper.dbmysql.AfInterfaceCollectMapper;
import com.docus.bgts.mapper.dbmysql.AfInterfaceCollectSubMapper;
import com.docus.bgts.mapper.dboracle.TestMapper;
import com.docus.bgts.rpc.dto.ReportDownDto;
import com.docus.bgts.rpc.dto.ReportDownScanFileDto;
import com.google.common.collect.Lists;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.*;
@ -54,7 +56,8 @@ public class AfCollectTaskServiceImpl extends ServiceImpl<AfCollectTaskMapper, A
synchronized (this) {
try {
AfCollectTask afCollectTask;
String patientId = getpatientIdByEmpId(reportDownDto.getPatient().getJzh());
String patientid = reportDownDto.getPatient().getPatientid();
String patientId = StrUtil.isEmpty(patientid) ? getpatientIdByEmpId(reportDownDto.getPatient().getJzh()) : patientid;
if (StringUtils.isBlank(patientId)) {
throw new RuntimeException("操作的病案信息不存在");
}
@ -117,7 +120,7 @@ public class AfCollectTaskServiceImpl extends ServiceImpl<AfCollectTaskMapper, A
String patientId;
AfCollectTask afCollectTask;
if (StringUtils.isBlank(reportDownDto.getPatient().getJzh())) {
patientId = getPatientIdByInpatientNo(reportDownDto.getPatient().getInPatientNo(), reportDownDto.getPatient().getVisitId());
patientId = getPatientIdByInpatientNo(reportDownDto.getPatient().getInpatientno(), reportDownDto.getPatient().getAdmisstimes());
} else {
patientId = getpatientIdByEmpId(reportDownDto.getPatient().getJzh());
}
@ -294,4 +297,14 @@ public class AfCollectTaskServiceImpl extends ServiceImpl<AfCollectTaskMapper, A
}
return maps;
}
@Override
public TSeal findSealByCondition(TSeal seal) {
return afCollectTaskMapper.findSealByCondition(seal);
}
@Override
public List<TBasic> getBasicInfo(TBasic tBasic) {
return afCollectTaskMapper.getBasicInfo(tBasic);
}
}

@ -2,6 +2,7 @@ package com.docus.bgts.service;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -14,7 +15,14 @@ import com.docus.bgts.mapper.dbmysql.AfCollectTaskMapper;
import com.docus.bgts.mapper.dbmysql.AfInterfaceCollectSubMapper;
import com.docus.bgts.mapper.dbmysql.MrReportErrorMapper;
import com.docus.bgts.mapper.dboracle.VDocumentPdfMapper;
import com.docus.bgts.utils.*;
import com.docus.bgts.rpc.DownloadPlatformRpc;
import com.docus.bgts.rpc.dto.ReportDownDto;
import com.docus.bgts.rpc.dto.ReportDownPatientDto;
import com.docus.bgts.rpc.dto.ReportDownScanFileDto;
import com.docus.bgts.utils.FileUtils;
import com.docus.bgts.utils.HttpUtils;
import com.docus.bgts.utils.SnowflakeIdWorker;
import com.docus.bgts.utils.XmlUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.cxf.endpoint.Client;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
@ -22,12 +30,11 @@ import org.apache.cxf.transport.http.HTTPConduit;
import org.apache.cxf.transports.http.configuration.HTTPClientPolicy;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.dom4j.*;
import org.dom4j.Element;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.io.ByteArrayInputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
@ -71,6 +78,9 @@ public class BgtsServiceImpl implements IBgtsService {
@Autowired
private ThreadPoolExecutor threadPoolExecutor;
@Autowired
private DownloadPlatformRpc downloadPlatformRpc;
@Override
public void collect(String empId) throws Exception {
String collectorid = String.valueOf(FileUtils.getJsonByName("collectorid"));
@ -101,7 +111,7 @@ public class BgtsServiceImpl implements IBgtsService {
String admiss = sim.format(ad);
String dis = sim.format(di);
//通过empId获取报告单号集合
List<String[]> exams = getExamNo(empId, admiss, dis);
List<String[]> exams = getExamNoByInpNo(empId, admiss, dis);
String jzh = afCollectTaskService.getJzhByInpatientNo(empId,times);
if (null == jzh) {
logger.info("通过住院号与住院次数未匹配到患者");
@ -115,6 +125,68 @@ public class BgtsServiceImpl implements IBgtsService {
collectExams(exams, empId, reportDownDto);
}
@Override
public void collectSealPacs(String sealId) throws Exception{
TSeal seal = getSealAndCheckBySealId(sealId);
if (Objects.isNull(seal.getAdmissDate())) {
throw new RuntimeException("sealId:" + sealId + " 封存病案信息 入院日期 为空!");
}
String jzh = seal.getJzh();
if (StrUtil.isBlank(jzh)) {
throw new RuntimeException("sealId:" + sealId + " 封存病案信息 记账号 为空!");
}
String inpatientNo = seal.getInpatientNo();
if (StrUtil.isBlank(inpatientNo)) {
throw new RuntimeException("sealId:" + sealId + " 封存病案信息 病案号 为空!");
}
Date admissDate = seal.getAdmissDate();
// 如果是在院的,默认出院时间为现在
Date disDate = new Date();
// 获取如果有出院的基础信息,得到真实的出院时间
TBasic basicCondition = new TBasic();
basicCondition.setJzh(jzh);
List<TBasic> basicInfo = afCollectTaskService.getBasicInfo(basicCondition);
if (CollUtil.isNotEmpty(basicInfo)) {
TBasic basic = basicInfo.get(0);
if (ObjectUtil.isNotNull(basic.getDisDate())) {
disDate = basic.getDisDate();
}
}
String pattern = "yyyy-MM-dd";
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
List<String[]> exams = getExamNoByInpNo(inpatientNo, sdf.format(admissDate), sdf.format(disDate));
//获取插入表数据
ReportDownDto reportDownDto = sealGetUrlCreateReportDto(exams, seal.getPatientId());
//插入文件af_collect_task表数据
afCollectTaskService.insert(reportDownDto);
//通过报告单号集合采集
downloadPlatformRpc.sealReport(reportDownDto);
}
/**
* id
*
* @param sealId id
* @return com.docus.bgts.entity.TSeal
* @date 2024/1/11 10:47
* @author YongBin Wen
*/
private TSeal getSealAndCheckBySealId(String sealId) {
TSeal condition = new TSeal();
condition.setSealId(sealId);
TSeal seal = afCollectTaskService.findSealByCondition(condition);
if (Objects.isNull(seal)) {
throw new RuntimeException("sealId:" + sealId + " 未找到封存病案信息!");
}
return seal;
}
@Override
public void collectEcg(String empId, String admissDate, String disDate, String times) throws Exception {
Map<String, String> smCollectionTime = getSmCollectionTimeEcg(admissDate, disDate);
@ -493,6 +565,49 @@ public class BgtsServiceImpl implements IBgtsService {
}
}
/**
* url
*
* @param exams
* @param patientId
* @return
*/
private ReportDownDto sealGetUrlCreateReportDto(List<String[]> exams, String patientId) throws Exception {
ReportDownDto reportDownDto = new ReportDownDto();
ReportDownPatientDto reportDownPatientDto = new ReportDownPatientDto();
reportDownPatientDto.setPatientid(patientId);
reportDownDto.setPatient(reportDownPatientDto);
String collectorid = String.valueOf(FileUtils.getJsonByName("collectorid"));
String assortid = String.valueOf(FileUtils.getJsonByName("assortid"));
reportDownDto.setAssortid(assortid);
reportDownDto.setCollectorid(collectorid);
List<ReportDownScanFileDto> reportDownScanFileDtos = new ArrayList<>();
ReportDownScanFileDto reportDownScanFileDto;
int filesource = Integer.parseInt(String.valueOf(FileUtils.getJsonByName("filesource")));
int filestoragetype = Integer.parseInt(String.valueOf(FileUtils.getJsonByName("filestoragetype")));
for (String[] exam : exams) {
try {
reportDownScanFileDto = getScanByExam(exam);
reportDownScanFileDto.setFilesource(filesource);
reportDownScanFileDto.setFilestoragetype(filestoragetype);
//过滤pacs中病理报告
if (collectorid.equals("3")) {
if (!reportDownScanFileDto.getDownurl().contains("病理")
&& !reportDownScanFileDto.getDownurl().contains("胃肠镜")
&& !reportDownScanFileDto.getDownurl().contains("心电")) {
reportDownScanFileDtos.add(reportDownScanFileDto);
}
}else {
reportDownScanFileDtos.add(reportDownScanFileDto);
}
}catch (Exception e){
logger.error(exam[0]+"调用明细错误信息-----"+e.getMessage());
}
}
reportDownDto.setScanfiles(reportDownScanFileDtos);
return reportDownDto;
}
/**
* url
*
@ -737,17 +852,17 @@ public class BgtsServiceImpl implements IBgtsService {
/**
* empId pacs
* pacs
*
* @param empId
* @param inpatientNo
* @return
*/
private List<String[]> getExamNo(String empId, String admissDate, String disDate) throws Exception {
private List<String[]> getExamNoByInpNo(String inpatientNo, String admissDate, String disDate) throws Exception {
List<String[]> exams = new ArrayList<>();
// Map<String, String> Time = getSmCollectionTime(admissDate, disDate);
XmlUtils reqXmlUtils = new XmlUtils(FileUtils.getXmlPath());
Element reqElement = reqXmlUtils.getMsgElement();
reqElement.element("INHOSP_INDEX_NO").setText(empId);
reqElement.element("INHOSP_INDEX_NO").setText(inpatientNo);
reqElement.element("BEGIN_DATE").setText(String.valueOf(admissDate));
reqElement.element("END_DATE").setText(String.valueOf(disDate));
logger.info("-------根据患者主索引号查询多个报告单号,地址:" + wsUrl + ",方法:" + wsLocalMethod + "---------");

@ -5,6 +5,9 @@ import com.docus.bgts.entity.*;
import com.docus.bgts.enums.Codes;
import com.docus.bgts.facade.IAfCollectTaskService;
import com.docus.bgts.mapper.dbmysql.ZdAssortMapper;
import com.docus.bgts.rpc.dto.ReportDownDto;
import com.docus.bgts.rpc.dto.ReportDownPatientDto;
import com.docus.bgts.rpc.dto.ReportDownScanFileDto;
import com.docus.bgts.utils.FileUtils;
import com.docus.bgts.utils.HttpUtils;
import org.apache.commons.lang3.StringUtils;

@ -3,6 +3,9 @@ server:
port: 9308
# http
docus:
downloadPlatformAddress: http://127.0.0.1:9291
mybatis-plus:
configuration:
map-underscore-to-camel-case: true

@ -82,6 +82,53 @@
where jzh=#{jzh}
and is_cancel='0'
</select>
<select id="findSealByCondition" resultType="com.docus.bgts.entity.TSeal">
SELECT *
FROM
`docus_medicalrecord`.`t_seal`
where
1=1
<if test="seal.sealId != null and seal.sealId != ''">
AND seal_id=#{seal.sealId}
</if>
<if test="seal.patientId != null and seal.patientId != ''">
AND patient_id=#{seal.patientId}
</if>
</select>
<select id="getBasicInfo" resultType="com.docus.bgts.entity.TBasic">
select
patient_id as patientId,
admiss_times as admissTimes,
inpatient_no as inpatientNo,
admiss_id as admissId,
admiss_date as admissDate,
dis_date as disDate,
admiss_dept_name as admissDeptName,
dis_dept_name as disDeptName ,
jzh,
name,
emp_id as empId
FROM
`docus_medicalrecord`.`t_basic`
WHERE
1=1
<if test="basic.patientId != null and basic.patientId != ''">
and `patient_id` = #{basic.patientId}
</if>
<if test="basic.jzh != null and basic.jzh != ''">
and `jzh` = #{basic.jzh}
</if>
<if test="basic.empId != null and basic.empId != ''">
and `emp_id` = #{basic.empId}
</if>
<if test="basic.inpatientNo != null and basic.inpatientNo != ''">
and `inpatient_no` = #{basic.inpatientNo}
</if>
<if test="basic.admisstimes != null">
and `admiss_times` = #{basic.admissTimes}
</if>
</select>
<resultMap id="groupByJzh" type="com.docus.bgts.entity.JzhListSync">
<result property="jzh" column="jzh"></result>

Loading…
Cancel
Save