瀏覽代碼

add:金牛卫建委推送

ct 3 天之前
父節點
當前提交
ba464cde19

+ 0 - 480
fs-admin/src/main/java/com/fs/his/task/NetMedicalService.java

@@ -1,480 +0,0 @@
-package com.fs.his.task;
-
-import cn.hutool.core.convert.Convert;
-import cn.hutool.core.io.FileUtil;
-import cn.hutool.core.io.file.PathUtil;
-import cn.hutool.core.util.IdcardUtil;
-import cn.hutool.http.HttpRequest;
-import cn.hutool.http.HttpResponse;
-import cn.hutool.http.HttpUtil;
-import cn.hutool.json.JSONUtil;
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-import com.fs.common.utils.file.ImageUtils;
-import com.fs.framework.interceptor.impl.SameUrlDataInterceptor;
-import com.fs.his.domain.FsInquiryOrderDTO;
-import com.fs.his.domain.FsPrescribeDrugDTO;
-import com.fs.his.dto.FsInquiryOrderPatientDTO;
-import com.fs.his.mapper.FsInquiryOrderMapper;
-import com.fs.his.mapper.FsPrescribeDrugMapper;
-import com.fs.his.param.FurtherConsultationParam;
-import com.fs.his.param.PrescriptionParam;
-import com.fs.his.service.IFsPrescribeService;
-import com.qiniu.util.Json;
-import lombok.AllArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
-
-import java.text.SimpleDateFormat;
-import java.time.Instant;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.time.ZoneId;
-import java.time.format.DateTimeFormatter;
-import java.util.*;
-import java.util.function.Function;
-import java.util.stream.Collectors;
-
-
-/**
- * 互联网医疗服务定时任务
- * 润天推送参考:每天从中午12点到下午17点,每个小时的整点执行一次
- */
-@Component("netMedicalService")
-@AllArgsConstructor
-@Slf4j
-public class NetMedicalService {
-
-    private final String prefix = "https://202.61.88.184:19200/";
-    private final String prescriptionPath = "wjw/upload/uploadRecipe";
-    private final String reconsultPath = "wjw/upload/uploadFurtherConsult";
-
-    private final IFsPrescribeService iFsPrescribeService;
-    private final FsPrescribeDrugMapper durgMapper;
-    private final FsInquiryOrderMapper inquiryOrderMapper;
-
-    public void uploadPrescription() {
-        log.info("互联网医疗服务定时任务启动,时间{}", LocalDateTime.now());
-
-        try {
-            // 1.抽取有生成电子处方and上传了首诊记录的数据
-            LocalDate today = LocalDate.now().minusDays(1);
-            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
-            String date = today.format(formatter);
-
-            // 此任务准备在凌晨执行,上传前一天的电子处方。
-            List<Map<String, Object>> result = iFsPrescribeService.selectUploadDate("2025-09-21");//TODO:测试修改
-            log.info("查询到 {} 条待上传处方数据", result.size());
-
-            if (result.isEmpty()) {
-                log.info("没有需要上传的处方数据");
-                return;
-            }
-
-            List<PrescriptionParam> paramList = processPrescriptions(result);
-
-            uploadToRemoteService(paramList);
-
-        } catch (Exception e) {
-            log.error("上传处方任务执行失败", e);
-        }
-    }
-
-    /**
-     * 网络诊疗服务数据上传
-     * TODO:请求体太大,可能需要分批请求;
-     */
-    public void uploadReconsultDate() {
-        log.info("开始执行网络诊疗服务数据上传任务");
-
-        // 使用 DateTimeFormatter 替代 SimpleDateFormat
-        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-
-        LocalDate today = LocalDate.now().minusDays(1);
-        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
-        String date = today.format(formatter);
-
-        log.info("查询日期: {}", date);
-        List<FsInquiryOrderDTO> fsInquiryOrderDTOS = inquiryOrderMapper.selectNeedUploadData("2025-01-01");//TODO:测试修改
-        log.info("查询到需要上传的数据条数: {}", fsInquiryOrderDTOS.size());
-
-        ArrayList<FurtherConsultationParam> paramList = new ArrayList<>();
-        int successCount = 0;
-        int skipCount = 0;
-        int errorCount = 0;
-
-        for (int i = 0; i < fsInquiryOrderDTOS.size(); i++) {
-            FsInquiryOrderDTO fsInquiryOrder = fsInquiryOrderDTOS.get(i);
-            String orderSn = fsInquiryOrder.getOrderSn();
-
-            log.debug("正在处理第 {}/{} 条数据, 订单号: {}", i + 1, fsInquiryOrderDTOS.size(), orderSn);
-
-            try {
-                // 检查是否开具处方
-                int isPrescribe = iFsPrescribeService.selectPrescribeByinquiryOrderId(fsInquiryOrder.getOrderId());
-                log.debug("订单 {} 处方检查结果: {}", orderSn, isPrescribe > 0 ? "有处方" : "无处方");
-
-                String imageUrl = fsInquiryOrder.getReportImages();
-                if (imageUrl == null || imageUrl.trim().isEmpty()) {
-                    log.warn("订单 {} 报告图片URL为空,跳过处理", orderSn);
-                    skipCount++;
-                    continue;
-                }
-
-                log.debug("订单 {} 报告图片URL: {}", orderSn, imageUrl);
-
-                Integer supportedImageFormat = getSupportedImageFormat(imageUrl);
-                if (Objects.isNull(supportedImageFormat)) {
-                    log.warn("订单 {} 不支持的文件后缀,跳过处理,图片URL: {}", orderSn, imageUrl);
-                    skipCount++;
-                    continue;
-                }
-                log.debug("订单 {} 图片格式识别成功: {}", orderSn, supportedImageFormat);
-
-                byte[] image = ImageUtils.getImage(imageUrl);
-                if (image == null || image.length == 0) {
-                    log.warn("订单 {} 无法获取图片数据,图片URL: {}", orderSn, imageUrl);
-                    skipCount++;
-                    continue;
-                }
-                log.debug("订单 {} 成功获取图片数据,图片大小: {} bytes", orderSn, image.length);
-
-                String base64Image = Base64.getEncoder().encodeToString(image);
-                log.debug("订单 {} Base64编码完成,编码后长度: {}", orderSn, base64Image.length());
-
-                // 安全处理时间字段
-                String applyTime = formatDateTimeSafely(fsInquiryOrder.getCreateTime(), dateTimeFormatter);
-                String startTime = formatDateTimeSafely(fsInquiryOrder.getStartTime(), dateTimeFormatter);
-                String endTime = formatDateTimeSafely(fsInquiryOrder.getFinishTime(), dateTimeFormatter);
-                String uploadTime = LocalDateTime.now().format(dateTimeFormatter);//TODO:这个完成时间必须传,业务上判断是否需要未完结的复诊数据
-
-                if (applyTime == null || startTime == null || endTime == null) {
-                    log.warn("订单 {} 时间字段存在空值,跳过处理", orderSn);
-                    skipCount++;
-                    continue;
-                }
-
-                FurtherConsultationParam param = FurtherConsultationParam.builder()
-                        .thirdUniqueid(orderSn)
-                        .orgName(fsInquiryOrder.getHospitalName())
-                        .orgCode("组织结构代码")
-                        .channelName("平台名称")
-                        .section(fsInquiryOrder.getDeptName())
-                        .sectionCode(fsInquiryOrder.getDeptCode())
-                        .docName(fsInquiryOrder.getDoctorName())
-                        .certificateNum(fsInquiryOrder.getCertificateCode())
-                        .patientName(fsInquiryOrder.getPatientName())
-                        .patientAge(IdcardUtil.getAgeByIdCard(fsInquiryOrder.getIdCard()))
-                        .patientSex(fsInquiryOrder.getSex())
-                        .patientIdcardType(1)
-                        .patientIdcardNum(fsInquiryOrder.getIdCard())
-                        .furtherConsultNo(orderSn)
-                        .furtherConsulType(1)
-                        .medicalHistory(fsInquiryOrder.getSelfMedHistory())
-                        .furtherConsultApplyTime(applyTime)
-                        .furtherConsulStartTime(startTime)
-                        .furtherConsulEndTime(endTime)
-                        .furtherConsulIsReply(1)
-                        .feeType(1)
-                        .furtherConsultDiagnosis(fsInquiryOrder.getInquiryResult())
-                        .furtherConsultDiagnosisNo("复诊icd诊断编码")
-                        .furtherConsultPrice(fsInquiryOrder.getMoney().toBigInteger().doubleValue())
-                        .patientEvaluate(1)
-                        .complainInfo("")
-                        .disposeResult("")
-                        .isRiskWarn(1)
-                        .isPatientSign(1)
-                        .isPrescription(isPrescribe > 0 ? 1 : 0)
-                        .uploadTime(uploadTime)
-                        .consultDiagnosisType(supportedImageFormat)
-                        .consultOrg("首诊机构")
-                        .consultDiagnosis(base64Image)
-                        .cityId("")
-                        .isMark("1")
-                        .build();
-
-                paramList.add(param);
-                successCount++;
-                log.debug("订单 {} 参数构建完成,已添加到上传列表", orderSn);
-
-            } catch (Exception e) {
-                errorCount++;
-                log.error("处理订单 {} 时发生异常: {}", orderSn, e.getMessage(), e);
-            }
-        }
-
-        log.info("数据处理完成 - 成功: {}条, 跳过: {}条, 异常: {}条", successCount, skipCount, errorCount);
-
-        if (paramList.isEmpty()) {
-            log.info("没有需要上传的数据,任务结束");
-            return;
-        }
-
-        try {
-            String jsonParam = JSON.toJSONString(paramList);
-            log.info("准备上传数据,参数条数: {}", paramList.size());
-//            log.debug("请求参数JSON: {}", jsonParam);
-
-            String urlPath = prefix + reconsultPath;
-            log.info("请求URL: {}", urlPath);
-
-            HttpRequest post = HttpUtil.createPost(urlPath);
-            post.body(jsonParam, "application/json; charset=utf-8");
-
-            log.info("开始发送HTTP请求...");
-            long startTime = System.currentTimeMillis();
-            HttpResponse response = post.execute();
-            long endTime = System.currentTimeMillis();
-
-            log.info("HTTP请求完成,状态码: {}, 耗时: {}ms", response.getStatus(), endTime - startTime);
-
-            if (response.isOk()) {
-                String responseBody = response.body();
-                log.info("上传成功,响应内容: {}", responseBody);
-
-                // 可以在这里添加响应结果解析和业务逻辑判断
-                try {
-                    JSONObject responseJson = JSON.parseObject(responseBody);
-                    if (responseJson != null) {
-                        String code = responseJson.getString("status");
-                        String message = responseJson.getString("message");
-                        log.info("响应解析 - 状态码: {}, 消息: {}", code, message);
-                    }
-                } catch (Exception e) {
-                    log.warn("响应内容解析失败: {}", e.getMessage());
-                }
-            } else {
-                log.error("上传失败,状态码: {}, 响应内容: {}", response.getStatus(), response.body());
-            }
-
-        } catch (Exception e) {
-            log.error("数据上传过程中发生异常: {}", e.getMessage(), e);
-        }
-        log.info("网络诊疗服务数据上传任务执行完毕");
-    }
-
-    private List<PrescriptionParam> processPrescriptions(List<Map<String, Object>> prescriptions) {
-        List<PrescriptionParam> paramList = new ArrayList<>();
-
-        for (Map<String, Object> prescribe : prescriptions) {
-            try {
-                PrescriptionParam param = processSinglePrescription(prescribe);
-                if (param != null) {
-                    paramList.add(param);
-                }
-            } catch (Exception e) {
-                log.error("处理处方失败, prescribe_id: {}", prescribe.get("prescribe_id"), e);
-            }
-        }
-
-        log.info("成功处理 {} 个处方", paramList.size());
-        return paramList;
-    }
-
-    private PrescriptionParam processSinglePrescription(Map<String, Object> prescribe) {
-        Long prescribeId = Convert.toLong(prescribe.get("prescribe_id"));
-        if (prescribeId == null) {
-            log.warn("处方ID为空,跳过处理");
-            return null;
-        }
-
-        // 药品信息查询
-        List<FsPrescribeDrugDTO> drugs = durgMapper.selectDrugList(prescribeId);
-        if (drugs == null || drugs.isEmpty()) {
-            log.warn("处方 {} 没有药品信息,跳过处理", prescribeId);
-            return null;
-        }
-
-        // 计算总量
-        Double quantity = calculateTotalQuantity(drugs);
-        Double days = calculateTotalDays(drugs);
-
-        // 组装药品信息
-        Map<String, String> drugInfoMap = buildDrugInfoMap(drugs);
-
-        // 构建处方参数
-        return buildPrescriptionParam(prescribe, drugInfoMap, quantity, days);
-    }
-
-    private Double calculateTotalQuantity(List<FsPrescribeDrugDTO> drugs) {
-        return drugs.stream().map(FsPrescribeDrugDTO::getDrugNum).filter(Objects::nonNull).mapToDouble(Convert::toDouble).sum();
-    }
-
-    private Double calculateTotalDays(List<FsPrescribeDrugDTO> drugs) {
-        return drugs.stream().map(FsPrescribeDrugDTO::getUsageDays).filter(Objects::nonNull).mapToDouble(Convert::toDouble).sum();
-    }
-
-    private Map<String, String> buildDrugInfoMap(List<FsPrescribeDrugDTO> drugs) {
-        Map<String, String> resultMap = new HashMap<>();
-        resultMap.put("drugName", join(drugs, FsPrescribeDrugDTO::getDrugName));
-        resultMap.put("specification", join(drugs, FsPrescribeDrugDTO::getDrugSpec));
-        resultMap.put("frequency", join(drugs, FsPrescribeDrugDTO::getUsageFrequencyUnit));
-        resultMap.put("useMethod", join(drugs, FsPrescribeDrugDTO::getUsageMethod));
-        resultMap.put("usagePerUseUnit", join(drugs, FsPrescribeDrugDTO::getUsagePerUseUnit));
-        resultMap.put("drugCode", join(drugs, FsPrescribeDrugDTO::getBarCode));
-        resultMap.put("doseEachTime", join(drugs, FsPrescribeDrugDTO::getUsagePerUseCount)); // 修复类型
-        return resultMap;
-    }
-
-    private PrescriptionParam buildPrescriptionParam(Map<String, Object> prescribe, Map<String, String> drugInfoMap, Double quantity, Double days) {
-        return PrescriptionParam.builder()
-                .thirdUniqueid(getString(prescribe, "prescribe_code"))
-                .orgName(getString(prescribe, "hospital_name"))
-                .orgCode("机构编码") // TODO: 不晓得从哪取
-                .section(getString(prescribe, "dept_name"))
-                .sectionCode(getString(prescribe, "dept_code"))
-                .docName(getString(prescribe, "doctor_name"))
-                .docCertificateNum(getString(prescribe, "certificate_code"))
-                .pharmacistName(getString(prescribe, "doctor_drug_name"))
-                .pharmacistCertificateNum(getString(prescribe, "doctor_drug_code"))
-                .patientName(getString(prescribe, "patient_name"))
-                .patientSex(getString(prescribe, "patient_gender"))
-                .patientAge(getInteger(prescribe, "patient_age"))
-                .patientIdcardType(1)
-                .feeType(1)
-                .patientIdcardNum(getString(prescribe, "id_card"))
-                .recipeTime(getString(prescribe, "create_time"))
-                .reviewTime(getString(prescribe, "create_time"))
-                .recipeUnitPrice(getDouble(prescribe, "total_price"))
-                .drugName(drugInfoMap.get("drugName"))
-                .drugCode(drugInfoMap.get("drugCode"))
-                .drugCommonName(drugInfoMap.get("drugName"))
-                .specification(drugInfoMap.get("specification"))
-                .frequency(drugInfoMap.get("frequency"))
-                .usage(drugInfoMap.get("useMethod"))
-                .doseUnit(drugInfoMap.get("usagePerUseUnit"))
-                .doseEachTime(drugInfoMap.get("doseEachTime"))
-                .medicationDays(days)
-                .quantity(quantity)
-                .drugPackage("药品包装") // TODO: 不晓得去哪取
-                .recipeAllPrice(getDouble(prescribe, "total_price"))
-                .uploadTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")))
-                .recipeNo(getString(prescribe, "prescribe_code"))
-                .cityId("") // TODO: 没有对应字典
-                .build();
-    }
-
-    private void uploadToRemoteService(List<PrescriptionParam> paramList) {
-        if (paramList.isEmpty()) {
-            log.info("没有需要上传的数据");
-            return;
-        }
-
-        try {
-            String url = prefix + prescriptionPath;
-            log.info("开始上传 {} 个处方到: {}", paramList.size(), url);
-
-            HttpRequest post = HttpUtil.createPost(url);
-            String requestBody = JSON.toJSONString(paramList);
-            log.debug("上传数据: {}", requestBody);//很大一坨
-
-            post.body(requestBody);
-            HttpResponse response = post.execute();
-
-//            log.info("上传完成,响应状态: {}", response.getStatus());
-            log.info("响应内容: {}", JSON.toJSONString(response));
-
-        } catch (Exception e) {
-            log.error("上传处方数据到远程服务失败", e);
-            throw new RuntimeException("上传失败", e);
-        }
-    }
-
-    // 工具方法
-    private String getString(Map<String, Object> map, String key) {
-        Object value = map.get(key);
-        return value != null ? value.toString() : "";
-    }
-
-    private Integer getInteger(Map<String, Object> map, String key) {
-        try {
-            Object value = map.get(key);
-            return value != null ? Integer.valueOf(value.toString()) : 0;
-        } catch (NumberFormatException e) {
-            log.warn("字段 {} 转换整数失败, 使用默认值0", key);
-            return 0;
-        }
-    }
-
-    private Double getDouble(Map<String, Object> map, String key) {
-        try {
-            Object value = map.get(key);
-            return value != null ? Double.valueOf(value.toString()) : 0.0;
-        } catch (NumberFormatException e) {
-            log.warn("字段 {} 转换浮点数失败, 使用默认值0.0", key);
-            return 0.0;
-        }
-    }
-
-    private String join(List<FsPrescribeDrugDTO> drugs, Function<FsPrescribeDrugDTO, String> fieldExtractor) {
-        return drugs.stream().map(fieldExtractor).filter(Objects::nonNull).filter(str -> !str.trim().isEmpty()).collect(Collectors.joining("|"));
-    }
-
-    /**
-     * 获取图片格式(只支持jpg、png、bmp)
-     *
-     * @param imagePath 图片路径
-     * @return 图片格式(jpeg, png, bmp),如果不支持则返回null
-     */
-    public static Integer getSupportedImageFormat(String imagePath) {
-        if (imagePath == null || imagePath.trim().isEmpty()) {
-            return null;
-        }
-
-        // 处理URL参数
-        String cleanPath = imagePath.split("[?#]")[0];
-
-        // 获取扩展名
-        String extension = "";
-        int lastDotIndex = cleanPath.lastIndexOf('.');
-        if (lastDotIndex > 0 && lastDotIndex < cleanPath.length() - 1) {
-            extension = cleanPath.substring(lastDotIndex + 1).toLowerCase();
-        }
-
-        // 只支持三种格式
-        switch (extension) {
-            case "jpg":
-            case "jpeg":
-                return 2;
-            case "png":
-                return 3;
-            case "bmp":
-                return 4;
-            default:
-                return null; // 不支持的格式返回null
-        }
-    }
-
-    /**
-     * 安全格式化时间方法,处理各种时间类型
-     */
-    private String formatDateTimeSafely(Object dateTime, DateTimeFormatter formatter) {
-        if (dateTime == null) {
-            log.warn("时间字段为null");
-            return null;
-        }
-
-        try {
-            if (dateTime instanceof java.util.Date) {
-                // 转换 java.util.Date 到 LocalDateTime
-                Instant instant = ((java.util.Date) dateTime).toInstant();
-                return LocalDateTime.ofInstant(instant, ZoneId.systemDefault()).format(formatter);
-            } else if (dateTime instanceof java.sql.Timestamp) {
-                // 转换 java.sql.Timestamp 到 LocalDateTime
-                return ((java.sql.Timestamp) dateTime).toLocalDateTime().format(formatter);
-            } else if (dateTime instanceof LocalDateTime) {
-                // 直接格式化 LocalDateTime
-                return ((LocalDateTime) dateTime).format(formatter);
-            } else if (dateTime instanceof LocalDate) {
-                // 处理 LocalDate,添加时间部分
-                return ((LocalDate) dateTime).atStartOfDay().format(formatter);
-            } else {
-                log.warn("不支持的时间类型: {}", dateTime.getClass().getName());
-                return null;
-            }
-        } catch (Exception e) {
-            log.error("时间格式化失败: {}, 原始值: {}", e.getMessage(), dateTime);
-            return null;
-        }
-    }
-}

+ 1 - 1
fs-admin/src/main/java/com/fs/his/task/Task.java

@@ -1899,7 +1899,7 @@ public class Task {
         List<FsUser> fsUserList = fsUsers.stream().filter(Objects::nonNull)
                 .filter(fsUser -> {
                     String imName = userInfosMap.get("U" + fsUser.getUserId());
-                    return imName != null && !Objects.equals(fsUser.getNickName(), imName);
+                    return imName != null && !Objects.equals(fsUser.getNickname(), imName);
                 }).collect(Collectors.toList());
         log.info("名字对不上的用户集合:{}", fsUserList);
         requestImUpdate(adminToken, fsUserList);

+ 7 - 1
fs-service/src/main/java/com/fs/his/domain/FsInquiryOrderDTO.java

@@ -6,14 +6,20 @@ import lombok.Data;
 public class FsInquiryOrderDTO extends FsInquiryOrder{
     private String json;
     private String doctorName;
+    private String drugDoctorName; //药师名称
+    private String practiseCode; //执业证编号(药师)
     private String hospitalName;
     private String deptCode;
     private String deptName;
-    private String certificateCode;
+    private String certificateCode; //资格证编号(医生)
     private String patientName;
     private String idCard;
     private String sex;
     private String selfMedHistory;
     private String inquiryResult;
     private String reportImages;
+    private String recipeTime; //处方日期,YYYY-MM-DD HH:mm:ss
+    private Integer prescribeType; //处方类型,1中药 2西药
+    private String reviewTime; //处方类型,1中药 2西药
+    private String packageJson; //套餐详情
 }

+ 1 - 0
fs-service/src/main/java/com/fs/his/param/UserInformationDoctorType2Param.java

@@ -13,4 +13,5 @@ public class UserInformationDoctorType2Param extends BaseParam implements Serial
     private Long doctorType;
     private Long doctorId;
     private Integer doctorConfirm;
+    private Long isTemplate;
 }

+ 250 - 7
fs-service/src/main/java/com/fs/his/service/impl/FsStoreSubOrderServiceImpl.java

@@ -9,10 +9,16 @@ import java.util.*;
 import java.util.logging.Logger;
 
 import cn.hutool.core.util.IdUtil;
+import cn.hutool.core.util.IdcardUtil;
+import cn.hutool.http.HttpRequest;
+import cn.hutool.http.HttpResponse;
+import cn.hutool.http.HttpUtil;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.fs.common.BeanCopyUtils;
 import com.fs.common.annotation.Log;
+import com.fs.common.utils.CloudHostUtils;
 import com.fs.common.utils.DateUtils;
 import com.fs.his.config.FsSysConfig;
 import com.fs.his.domain.*;
@@ -27,7 +33,11 @@ import com.fs.his.vo.FsStoreProductAttrVO;
 import com.fs.his.vo.FsStoreSubOrderListVO;
 import com.fs.his.vo.FsStoreSubOrderVO;
 import com.fs.his.vo.FsSubOrderResultVO;
+import com.fs.wjw.dto.UploadConsultNewDto;
+import com.fs.wjw.dto.UploadFurtherConsultNewDto;
+import com.fs.wjw.dto.UploadRecipeNewDto;
 import com.qcloud.cos.transfer.Copy;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.http.HttpEntity;
 import org.apache.http.client.methods.CloseableHttpResponse;
 import org.apache.http.util.EntityUtils;
@@ -47,6 +57,7 @@ import org.apache.http.impl.client.HttpClients;
  * @date 2024-05-09
  */
 @Service
+@Slf4j
 public class FsStoreSubOrderServiceImpl implements IFsStoreSubOrderService
 {
     @Autowired
@@ -69,7 +80,8 @@ public class FsStoreSubOrderServiceImpl implements IFsStoreSubOrderService
     FsStoreProductMapper fsStoreProductMapper;
     @Autowired
     ConfigUtil configUtil;
-    org.slf4j.Logger logger= LoggerFactory.getLogger(getClass());
+    @Autowired
+    private FsDepartmentMapper departmentMapper;
     /**
      * 查询订单
      *
@@ -154,7 +166,7 @@ public class FsStoreSubOrderServiceImpl implements IFsStoreSubOrderService
         FsStoreOrder fsStoreOrder = fsStoreOrderMapper.selectFsStoreOrderByOrderId(orderId);
         if (fsStoreOrder!=null&&fsStoreOrder.getPrescribeId()!=null){
             FsPrescribe  fsPrescribe = fsPrescribeMapper.selectFsPrescribeByPrescribeId(fsStoreOrder.getPrescribeId());
-            logger.info("拆分处方:"+fsPrescribe);
+            log.info("拆分处方:"+fsPrescribe);
             if (fsPrescribe!=null){
                 FsPrescribeDrug q = new FsPrescribeDrug();
                 q.setPrescribeId(fsStoreOrder.getPrescribeId());
@@ -389,7 +401,7 @@ public class FsStoreSubOrderServiceImpl implements IFsStoreSubOrderService
                         sub.setSubOrderCode(IdUtil.getSnowflake(0, 0).nextIdStr());
                         sub.setDrugDoctorId(fsPrescribe.getDrugDoctorId());
                         fsStoreSubOrderMapper.insertFsStoreSubOrder(sub);
-                        logger.info("药师id:"+fsPrescribe.getDrugDoctorId());
+                        log.info("药师id:"+fsPrescribe.getDrugDoctorId());
                     }
                     FsStoreSubOrder sub = BeanCopyUtils.copy(fsStoreOrder, FsStoreSubOrder.class);
                     BigDecimal prodCostPrice = new BigDecimal("0");
@@ -509,7 +521,7 @@ public class FsStoreSubOrderServiceImpl implements IFsStoreSubOrderService
                     sub.setIcdCode(fsPrescribe.getIcdCode());
                     sub.setSubOrderCode(IdUtil.getSnowflake(0, 0).nextIdStr());
                     sub.setDrugDoctorId(fsPrescribe.getDrugDoctorId());
-                    logger.info("药师id:"+fsPrescribe.getDrugDoctorId());
+                    log.info("药师id:"+fsPrescribe.getDrugDoctorId());
                     fsStoreSubOrderMapper.insertFsStoreSubOrder(sub);
                 }
             }
@@ -519,6 +531,9 @@ public class FsStoreSubOrderServiceImpl implements IFsStoreSubOrderService
 
     @Override
     public FsSubOrderResultVO TuiFsStoreSubOrderByStoreOrder(Long orderId) {
+        if (CloudHostUtils.hasCloudHostName("金牛明医")){
+            return tuiFsStoreSubOrderByStoreOrderAndJN(orderId);
+        }
         FsSysConfig sysConfig = configUtil.getSysConfig();
         System.out.println(orderId);
         FsStoreSubOrder fsStoreSubOrder = fsStoreSubOrderMapper.selectFsStoreSubOrderBySubOrderId(orderId);
@@ -574,7 +589,7 @@ public class FsStoreSubOrderServiceImpl implements IFsStoreSubOrderService
             d.setDetailsUsage(fsStoreSubOrder.getDetailsUsage()!=null&&fsStoreSubOrder.getDetailsUsage()!=""?fsStoreSubOrder.getDetailsUsage():"无");
             d.setDetailsFrequencyStr(drug.getUsageFrequencyUnit()!=null&&drug.getUsageFrequencyUnit()!=""?drug.getUsageFrequencyUnit():"无");
             d.setDrugCommonCode(drug.getPrescribeCode()!=null&&drug.getPrescribeCode().trim().length()!=0?drug.getPrescribeCode():"无");
-            logger.info("国药准字:"+d.getDrugCommonCode());
+            log.info("国药准字:"+d.getDrugCommonCode());
             drugs.add(d);
         }
         param.setDrugList(drugs); // 药品列表
@@ -594,7 +609,7 @@ public class FsStoreSubOrderServiceImpl implements IFsStoreSubOrderService
                 // 获取响应状态
                 HttpEntity entity = response.getEntity();
                 String responseBody = EntityUtils.toString(entity);
-                logger.info(orderId+"上传处方返回:"+responseBody);
+                log.info(orderId+"上传处方返回:"+responseBody);
                 FsSubOrderResultVO fsSubOrderResultVO = JSON.parseObject(responseBody, FsSubOrderResultVO.class);
                 if (fsSubOrderResultVO.getCode()==1){
                     FsStoreSubOrder o = new FsStoreSubOrder();
@@ -606,7 +621,7 @@ public class FsStoreSubOrderServiceImpl implements IFsStoreSubOrderService
                     o.setSubOrderId(orderId);
                     o.setIsPush(2);
                     fsStoreSubOrderMapper.updateFsStoreSubOrder(o);
-                    logger.info(orderId+":上传处方错误:"+fsSubOrderResultVO+":"+param.getDoctorName());
+                    log.info(orderId+":上传处方错误:"+fsSubOrderResultVO+":"+param.getDoctorName());
                 }
                 return fsSubOrderResultVO;
             }
@@ -617,6 +632,234 @@ public class FsStoreSubOrderServiceImpl implements IFsStoreSubOrderService
         return null;
     }
 
+    private FsSubOrderResultVO tuiFsStoreSubOrderByStoreOrderAndJN(Long orderId){
+        FsStoreSubOrder fsStoreSubOrder = fsStoreSubOrderMapper.selectFsStoreSubOrderBySubOrderId(orderId);
+        FsSubOrderResultVO fsSubOrderResultVO = new FsSubOrderResultVO();
+
+        try {
+            //1.网络咨询服务数据上传-外部
+            FsDoctor fsDoctor = fsDoctorMapper.selectFsDoctorByDoctorId(fsStoreSubOrder.getDoctorId());
+            FsPatient fsPatient = fsPatientMapper.selectFsPatientByPatientId(fsStoreSubOrder.getPatientId());
+            FsDepartment department=departmentMapper.selectFsDepartmentByDeptId(fsDoctor.getDeptId());
+            String section = department.getDeptName();
+            String sectionCode = department.getDeptCode();
+            String thirdUniqueid = fsStoreSubOrder.getSubOrderId().toString();
+            String doctorName = fsDoctor.getDoctorName();
+            String sex = null;
+            if (fsPatient.getSex()==null) {
+                sex = "未知";
+            } else if (fsPatient.getSex() == 1){
+                sex = "男";
+            } else {
+                sex = "女";
+            }
+            String createDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(fsStoreSubOrder.getCreateTime());
+            UploadConsultNewDto uploadConsultNewDto = UploadConsultNewDto.builder()
+                    .thirdUniqueid(thirdUniqueid)
+                    .uploadTime(DateUtils.getTime())
+                    .section(section)
+                    .sectionCode(sectionCode)
+                    .docName(doctorName)
+                    .certificateNum(fsDoctor.getCertificateCode())
+                    .patientName(fsStoreSubOrder.getPatientName())
+                    .patientAge(IdcardUtil.getAgeByIdCard(fsStoreSubOrder.getPatientIdcard()))
+                    .patientSex(sex)
+                    .patientIdcardType(1)
+                    .patientIdcardNum(fsStoreSubOrder.getPatientIdcard())
+                    .serviceType(1)
+                    .consultNo(thirdUniqueid)
+                    .consultType(1) //1、图文咨询 2语音咨询3、视频咨询
+                    .consultApplyTime(createDate)
+                    .consultStartTime(createDate)
+                    .consultEndTime(createDate)
+                    .feeType(1)
+                    .price(fsStoreSubOrder.getPayMoney())
+                    .isReply(1)
+                    .medicalHistory(fsStoreSubOrder.getDiagnosis())
+                    .build();
+            String consultJsonParam = JSON.toJSONString(uploadConsultNewDto);
+            if (!doRequest(consultJsonParam,consultPath)){
+                fsSubOrderResultVO.setCode(0);
+                return fsSubOrderResultVO;
+            }
+
+
+            //2.网络复诊服务数据上传-外部
+            UploadFurtherConsultNewDto uploadFurtherConsultNewDto = UploadFurtherConsultNewDto.builder()
+                    .thirdUniqueid(thirdUniqueid)
+                    .uploadTime(DateUtils.getTime())
+                    .section(section)
+                    .sectionCode(sectionCode)
+                    .docName(doctorName)
+                    .certificateNum(fsDoctor.getCertificateCode())
+                    .patientName(fsStoreSubOrder.getPatientName())
+                    .patientAge(IdcardUtil.getAgeByIdCard(fsStoreSubOrder.getPatientIdcard()))
+                    .patientSex(sex)
+                    .patientIdcardType(1)
+                    .patientIdcardNum(fsStoreSubOrder.getPatientIdcard())
+                    .furtherConsultNo(thirdUniqueid)
+                    .furtherConsulType(1)
+                    .medicalHistory(fsStoreSubOrder.getDiagnosis())
+                    .consultDiagnosisType(1)
+                    .consultDiagnosis(fsStoreSubOrder.getDiagnosis())
+                    .consultTime(DateUtils.addDateDays(30) +" " + DateUtils.getTime().split(" ")[1])
+                    .furtherConsultApplyTime(createDate)
+                    .furtherConsulStartTime(createDate)
+                    .furtherConsulEndTime(createDate)
+                    .furtherConsulIsReply(1)
+                    .feeType(1)
+                    .furtherConsultDiagnosis(fsStoreSubOrder.getDiagnosis())
+                    .furtherConsultDiagnosisNo(fsStoreSubOrder.getIcdCode())
+                    .furtherConsultPrice(fsStoreSubOrder.getPayMoney())
+                    .patientEvaluate(1)
+                    .isPrescription(1)//处方药
+                    .build();
+            String furtherJsonParam = JSON.toJSONString(uploadFurtherConsultNewDto);
+
+            if (!doRequest(furtherJsonParam,furtherPath)){
+                fsSubOrderResultVO.setCode(0);
+                return fsSubOrderResultVO;
+            }
+
+            String prescribeDrugJson = fsStoreSubOrder.getPrescribeDrugJson();
+            List<FsPrescribeDrug> fsPrescribeDrugs = JSON.parseArray(prescribeDrugJson, FsPrescribeDrug.class);
+            StringBuilder drugName = new StringBuilder();
+            StringBuilder drugCode = new StringBuilder();
+            StringBuilder drugCommonName = new StringBuilder();
+            StringBuilder specification = new StringBuilder();
+            StringBuilder frequency = new StringBuilder();
+            StringBuilder usage = new StringBuilder();
+            StringBuilder doseUnit = new StringBuilder();
+            StringBuilder doseEachTime = new StringBuilder();
+            StringBuilder medicationDays = new StringBuilder();
+            StringBuilder quantity = new StringBuilder();
+            StringBuilder drugPackage = new StringBuilder();
+            for (FsPrescribeDrug drug : fsPrescribeDrugs) {
+                drugName.append(drug.getDrugNum()).append("|");
+                drugCode.append(drug.getBarCode()).append("|");
+                drugCommonName.append(drug.getDrugNum()).append("|");
+                specification.append(drug.getDrugSpec()).append("|");
+                frequency.append(drug.getUsageFrequencyUnit()).append("|");
+                usage.append(drug.getUsageMethod()).append("|");
+                doseUnit.append(drug.getDrugUnit()).append("|");
+                doseEachTime.append(drug.getUsagePerUseCount()).append("|");
+                medicationDays.append(drug.getUsageDays()).append("|");
+                quantity.append(drug.getDrugNum()).append("|");
+                drugPackage.append(drug.getDrugImgUrl()).append("|");
+            }
+            //3.电子处方服务数据上传-外部
+            FsDoctor drugDoctor = fsDoctorMapper.selectFsDoctorByDoctorId(fsStoreSubOrder.getDrugDoctorId());
+            UploadRecipeNewDto uploadRecipeNewDto = UploadRecipeNewDto.builder()
+                    .thirdUniqueid(thirdUniqueid)
+                    .uploadTime(DateUtils.getTime())
+                    .section(section)
+                    .sectionCode(sectionCode)
+                    .docName(doctorName)
+                    .docCertificateNum(fsDoctor.getCertificateCode())
+                    .pharmacistName(drugDoctor.getDoctorName())
+                    .pharmacistOrg("成都金牛明医云联互联网医院有限公司")
+                    .pharmacistCertificateNum(drugDoctor.getPractiseCode()) //药师执业资格证号
+                    .furtherConsultNo(thirdUniqueid)
+                    .furtherConsultDiagnosis(fsStoreSubOrder.getDiagnosis())
+                    .patientName(fsStoreSubOrder.getPatientName())
+                    .patientAge(IdcardUtil.getAgeByIdCard(fsStoreSubOrder.getPatientIdcard()))
+                    .patientSex(sex)
+                    .patientIdcardType(1)
+                    .patientIdcardNum(fsStoreSubOrder.getPatientIdcard())
+                    .feeType(1)
+                    .medicalHistory(fsStoreSubOrder.getDiagnosis())
+                    .recipeTime(createDate)
+                    .recipeType(fsStoreSubOrder.getOrderType())
+                    .reviewTime(createDate)
+                    .recipeUnitPrice(fsStoreSubOrder.getPayMoney())
+                    .drugName(drugName.toString())
+                    .drugCode(drugCode.toString())
+                    .drugCommonName(drugCommonName.toString())
+                    .specification(specification.toString())
+                    .frequency(frequency.toString())
+                    .usage(usage.toString())
+                    .doseUnit(doseUnit.toString())
+                    .doseEachTime(doseEachTime.toString())
+                    .medicationDays(medicationDays.toString())
+                    .quantity(quantity.toString())
+                    .drugPackage(drugPackage.toString())
+                    .recipeAllPrice(fsStoreSubOrder.getPayMoney())
+                    .recipeNo(drugCode.toString())
+                    .build();
+            String reconsultJsonParam = JSON.toJSONString(uploadRecipeNewDto);
+
+            if (!doRequest(reconsultJsonParam,prescriptionPath)){
+                fsSubOrderResultVO.setCode(0);
+                return fsSubOrderResultVO;
+            }
+
+            FsStoreSubOrder o = new FsStoreSubOrder();
+            o.setSubOrderId(orderId);
+            o.setIsPush(1);
+            fsStoreSubOrderMapper.updateFsStoreSubOrder(o);
+            fsSubOrderResultVO.setCode(1);
+        } catch (Exception e) {
+            FsStoreSubOrder o = new FsStoreSubOrder();
+            o.setSubOrderId(orderId);
+            o.setIsPush(2);
+            fsStoreSubOrderMapper.updateFsStoreSubOrder(o);
+            log.info(orderId+":上传处方错误");
+            fsSubOrderResultVO.setCode(0);
+        }
+        return fsSubOrderResultVO;
+    }
+
+    /**
+     * 金牛卫健委请求
+     * @param jsonParam
+     * @param path
+     */
+
+    private final static String prefix = "https://api.myylhlwyy.com/";
+    private final static String consultPath = "supervision/supervision/uploadConsultNew";//网络咨询服务数据上传-外部
+    private final static String furtherPath = "supervision/supervision/uploadFurtherConsultNew";//网络复诊服务数据上传-外部
+    private final static String prescriptionPath = "supervision/supervision/uploadRecipeNew";//电子处方服务数据上传-外部
+    private boolean doRequest(String jsonParam,String path) {
+        String urlPath = prefix + path;
+        log.info("请求URL: {}", urlPath);
+
+        HttpRequest post = HttpUtil.createPost(urlPath);
+        post.body(jsonParam, "application/json; charset=utf-8");
+
+        log.info("开始发送HTTP请求...");
+        long requestStartTime = System.currentTimeMillis();
+        HttpResponse response = post.execute();
+        long requestEndTime = System.currentTimeMillis();
+
+        log.info("HTTP请求完成,状态码: {}, 耗时: {}ms", response.getStatus(), requestEndTime - requestStartTime);
+        if (response.isOk()) {
+            String responseBody = response.body();
+            log.info("上传成功,响应内容: {}", responseBody);
+
+            // 可以在这里添加响应结果解析和业务逻辑判断
+            try {
+                JSONObject responseJson = JSON.parseObject(responseBody);
+                if (responseJson != null) {
+                    String code = responseJson.getString("code");
+                    String message = responseJson.getString("message");
+                    String data = responseJson.getString("data");
+                    String requestId = responseJson.getString("requestId");
+                    log.info("响应解析 - 状态码: {}, 消息: {}", code, message);
+                    if ("200".equals(code)) {
+                        return  true;
+                    }
+                }
+                return false;
+            } catch (Exception e) {
+                log.warn("响应内容解析失败: {}", e.getMessage());
+                return false;
+            }
+        } else {
+            log.error("上传失败,状态码: {}, 响应内容: {}", response.getStatus(), response.body());
+            return false;
+        }
+    }
+
     @Override
     public List<Long> selectFsStoreSubOrderByNoPush() {
         return fsStoreSubOrderMapper.selectFsStoreSubOrderByNoPush();

+ 57 - 0
fs-service/src/main/java/com/fs/wjw/dto/UploadConsultNewDto.java

@@ -0,0 +1,57 @@
+package com.fs.wjw.dto;
+
+import lombok.Builder;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@Builder
+public class UploadConsultNewDto {
+    /** 唯一标识,可以传主键ID,处方/问诊订单ID */
+    private String thirdUniqueid;
+    /** 上传时间,YYYY-MM-DD HH:mm:ss **/
+    private String uploadTime;
+    /** 科室名称 */
+    private String section;
+    /** 科室编码(三医监管),三医监管的和诊疗科目编码是一致: https://wenku.baidu.com/view/cbc1ff8e9b8fcc22bcd126fff705cc1754275f16.html*/
+    private String sectionCode;
+
+    /**姓名(医师、护师、技师)**/
+    private String docName;
+    /**执业资格证号 **/
+    private String certificateNum;
+    /**患者姓名 **/
+    private String patientName;
+    /**患者年龄 **/
+    private Integer patientAge;
+    /** 患者性别(男/女) **/
+    private String patientSex;
+    /**证件类型(1 身份证 2 护照) **/
+    private Integer patientIdcardType;
+    /**患者证件号码**/
+    private String patientIdcardNum;
+    /**服务类型(1网络咨询 2网络门诊),默认1 **/
+    private Integer serviceType;
+    /**网络咨询或网络门诊编号 **/
+    private String consultNo;
+
+    /**咨询类别(1、图文咨询 2语音咨询3、视频咨询) **/
+    private Integer consultType;
+    /**咨询申请时间,YYYY-MM-DD HH:mm:ss **/
+    private String consultApplyTime;
+    /** 咨询开始时间,YYYY-MM-DD HH:mm:ss **/
+    private String consultStartTime;
+    /**咨询结束时间,YYYY-MM-DD HH:mm:ss **/
+    private String consultEndTime;
+    /** 费别(1自费 2医保),默认1 **/
+    private Integer feeType;
+    /**咨询价格(元) **/
+    private BigDecimal price;
+
+    /**咨询是否回复(0未回复 1已回复) **/
+    private Integer isReply;
+
+    /**患者病史描述**/
+    private String medicalHistory;
+}

+ 90 - 0
fs-service/src/main/java/com/fs/wjw/dto/UploadFurtherConsultNewDto.java

@@ -0,0 +1,90 @@
+package com.fs.wjw.dto;
+
+import lombok.Builder;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@Builder
+public class UploadFurtherConsultNewDto {
+    /** 唯一标识,可以传主键ID,处方/问诊订单ID */
+    private String thirdUniqueid;
+
+    /** 上传时间,YYYY-MM-DD HH:mm:ss */
+    private String uploadTime;
+
+    /** 科室名称 */
+    private String section;
+
+    /** 科室编码(三医监管),三医监管的和诊疗科目编码是一致: https://wenku.baidu.com/view/cbc1ff8e9b8fcc22bcd126fff705cc1754275f16.html*/
+    private String sectionCode;
+
+    /**姓名(医师、护师、技师)**/
+    private String docName;
+
+    /**执业资格证号 **/
+    private String certificateNum;
+    /**患者姓名 **/
+    private String patientName;
+
+    /**患者年龄 **/
+    private Integer patientAge;
+    /** 患者性别(男/女) **/
+    private String patientSex;
+
+    /**证件类型(1 身份证 2 护照) **/
+    private Integer patientIdcardType;
+    /**患者证件号码**/
+    private String patientIdcardNum;
+
+    /**网络复诊编号**/
+    private String furtherConsultNo;
+
+    /**复诊类别(1、图文诊疗 2语音诊疗3、视频诊疗)**/
+    private Integer furtherConsulType;
+
+    /**患者病史描述**/
+    private String medicalHistory;
+
+    /**首诊诊断类型(1文字,2图片jpg格式,3图片png格式,4图片bmp格式),默认1**/
+    private Integer consultDiagnosisType;
+
+    /**首诊诊断,传当前问诊诊断**/
+    private String consultDiagnosis;
+
+    /** 首诊时间,YYYY-MM-DD HH:mm:ss,传问诊时间 **/
+    private String consultTime;
+
+    /** 复诊申请时间,YYYY-MM-DD HH:mm:ss **/
+    private String furtherConsultApplyTime;
+
+    /** 复诊开始时间,YYYY-MM-DD HH:mm:ss **/
+    private String furtherConsulStartTime;
+
+    /** 复诊结束时间,YYYY-MM-DD HH:mm:ss **/
+    private String furtherConsulEndTime;
+
+    /** 复诊是否回复(0未回复 1已回复) **/
+    private Integer furtherConsulIsReply;
+
+    /** 费别(1自费 2医保),默认1 **/
+    private Integer feeType;
+
+    /** 复诊诊断(复诊患者在实体医院的诊断名称,如有多条,使用“|”进行分隔) **/
+    private String furtherConsultDiagnosis;
+
+    /** 复诊icd诊断编码 **/
+    private String furtherConsultDiagnosisNo;
+
+    /** 复诊价格(元) **/
+    private BigDecimal furtherConsultPrice;
+
+    /** 患者满意度(1-5,1代表非常满意,5代表非常不满意) **/
+    private Integer patientEvaluate;
+
+    /** 是否开具处方(0否 1是) **/
+    private Integer isPrescription;
+
+
+}

+ 8 - 146
fs-admin/src/main/java/com/fs/his/param/PrescriptionParam.java → fs-service/src/main/java/com/fs/wjw/dto/UploadRecipeNewDto.java

@@ -1,39 +1,18 @@
-package com.fs.his.param;
+package com.fs.wjw.dto;
 
 import lombok.Builder;
 import lombok.Data;
 
-/**
- * 电子处方信息上传请求参数
- */
+import java.math.BigDecimal;
+
 @Data
 @Builder
-public class PrescriptionParam {
-
-    /**
-     * 接口调用凭证
-     */
-    private String accessToken;
-
-    /**
-     * 第三方厂商标识
-     */
-    private String clientId;
-
+public class UploadRecipeNewDto {
     /**
      * 唯一标识,用于唯一确定某条记录,避免重复上传,一般传该条数据的主键
      */
     private String thirdUniqueid;
 
-    /**
-     * 机构名称
-     */
-    private String orgName;
-
-    /**
-     * 机构编码
-     */
-    private String orgCode;
 
     /**
      * 科室名称
@@ -105,25 +84,6 @@ public class PrescriptionParam {
      */
     private String patientIdcardNum;
 
-    /**
-     * 监护人姓名,患者年龄小于6岁需填此项
-     */
-    private String guardianName;
-
-    /**
-     * 监护人身份证,患者年龄小于6岁需填此项
-     */
-    private String guardianIdcardNum;
-
-    /**
-     * 陪伴医师姓名,患者年龄小于6岁需填此项
-     */
-    private String accompanyDocName;
-
-    /**
-     * 陪伴医师执业证号码,患者年龄小于6岁需填此项
-     */
-    private String accompanyCertificateNum;
 
     /**
      * 费别,1自费 2医保
@@ -153,7 +113,7 @@ public class PrescriptionParam {
     /**
      * 处方单价,单位:元
      */
-    private Double recipeUnitPrice;
+    private BigDecimal recipeUnitPrice;
 
     /**
      * 药品名称商品名,以|作为分隔,相同index位置的为一组数据
@@ -200,17 +160,12 @@ public class PrescriptionParam {
     /**
      * 用药天数
      */
-    private Double medicationDays;
-
-    /**
-     * 帖数
-     */
-    private Double packetNum;
+    private String medicationDays;
 
     /**
      * 数量
      */
-    private Double quantity;
+    private String quantity;
 
     /**
      * 药品包装
@@ -220,110 +175,17 @@ public class PrescriptionParam {
     /**
      * 处方总价,单位:元
      */
-    private Double recipeAllPrice;
-
-    /**
-     * 是否经过合理用药判断标志,0 否 1 是
-     */
-    private Integer isRationalDrugUse;
-
-    /**
-     * 合理用药审核结果
-     */
-    private String rationalDrugUseReason;
-
-    /**
-     * 配送单位,配送药企、医院药房发药或药店名称
-     */
-    private String deliveryOrg;
-
-    /**
-     * 核销方式,0 医院取药 1物流配送 2药店取药 3自动失效
-     */
-    private Integer cancelAfterVerifyWay;
-
-    /**
-     * 处方核销状态,0未核销 1已核销
-     */
-    private Integer cancelAfterVerifyStatus;
-
-    /**
-     * 处方核销时间,物流配送、医院药房发药或药店自购时间、自动失效时间
-     */
-    private String cancelAfterVerifyTime;
+    private BigDecimal recipeAllPrice;
 
-    /**
-     * 配送金额
-     */
-    private Double deliveryPrice;
 
     /**
      * 上传时间,格式:YYYY-MM-DD HH:mm:ss
      */
     private String uploadTime;
 
-    /**
-     * 医师ca签名订单id
-     */
-    private String docCaSignOrderId;
-
-    /**
-     * 医师ca签名值
-     */
-    private String docCaSign;
-
-    /**
-     * 医师ca签名时间,格式:YYYY-MM-DD HH:mm:ss
-     */
-    private String docCaSignTime;
-
-    /**
-     * 医师ca登录值
-     */
-    private String docCaLoginSign;
-
-    /**
-     * 医师ca登录时间,格式:YYYY-MM-DD HH:mm:ss
-     */
-    private String docCaLoginTime;
-
-    /**
-     * 药师ca签名订单id
-     */
-    private String pharmacistCaSignOrderId;
-
-    /**
-     * 药师ca签名值
-     */
-    private String pharmacistCaSign;
-
-    /**
-     * 药师ca签名时间,格式:YYYY-MM-DD HH:mm:ss
-     */
-    private String pharmacistCaSignTime;
-
-    /**
-     * 药师ca登录值
-     */
-    private String pharmacistCaLoginSign;
-
-    /**
-     * 药师ca登录时间,格式:YYYY-MM-DD HH:mm:ss
-     */
-    private String pharmacistCaLoginTime;
 
     /**
      * 医院处方编号
      */
     private String recipeNo;
-
-    /**
-     * 所在城市id(参考地区字段)
-     */
-    private String cityId;
-
-    /**
-     * 职称
-     */
-    private String jobTitle;
 }