瀏覽代碼

feature: 下载挂号订单优化

wuyongyi 2 年之前
父節點
當前提交
f1532ad808
共有 21 個文件被更改,包括 1506 次插入36 次删除
  1. 928 0
      src/main/java/com/ywt/mg/domain/ywtDrugEntities/PrescriptionDrugView.java
  2. 29 0
      src/main/java/com/ywt/mg/domain/ywtDrugEntities/PrescriptionDrugViewRepository.java
  3. 5 5
      src/main/java/com/ywt/mg/domain/ywtDrugEntities/PrescriptionInfoRepository.java
  4. 56 2
      src/main/java/com/ywt/mg/services/DownloadRecordService.java
  5. 367 6
      src/main/java/com/ywt/mg/services/PrescriptionServices.java
  6. 1 1
      src/main/java/com/ywt/mg/web/controllers/CheckUpOrderController.java
  7. 1 1
      src/main/java/com/ywt/mg/web/controllers/DepositController.java
  8. 1 1
      src/main/java/com/ywt/mg/web/controllers/DownloadRecordController.java
  9. 2 2
      src/main/java/com/ywt/mg/web/controllers/MealOrderController.java
  10. 1 1
      src/main/java/com/ywt/mg/web/controllers/NatOrderController.java
  11. 1 1
      src/main/java/com/ywt/mg/web/controllers/OfflineController.java
  12. 1 1
      src/main/java/com/ywt/mg/web/controllers/OutpatientOrderController.java
  13. 98 0
      src/main/java/com/ywt/mg/web/controllers/PrescriptionController.java
  14. 1 1
      src/main/java/com/ywt/mg/web/controllers/RegisteredOrderController.java
  15. 2 2
      src/main/java/com/ywt/mg/web/controllers/hospital/HospCheckUpOrderController.java
  16. 2 2
      src/main/java/com/ywt/mg/web/controllers/hospital/HospDepositController.java
  17. 2 2
      src/main/java/com/ywt/mg/web/controllers/hospital/HospMealOrderController.java
  18. 1 1
      src/main/java/com/ywt/mg/web/controllers/hospital/HospNatOrderController.java
  19. 3 3
      src/main/java/com/ywt/mg/web/controllers/hospital/HospOfflineController.java
  20. 2 2
      src/main/java/com/ywt/mg/web/controllers/hospital/HospOutpatientOrderController.java
  21. 2 2
      src/main/java/com/ywt/mg/web/controllers/hospital/HospRegisteredOrderController.java

+ 928 - 0
src/main/java/com/ywt/mg/domain/ywtDrugEntities/PrescriptionDrugView.java

@@ -0,0 +1,928 @@
+package com.ywt.mg.domain.ywtDrugEntities;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * VIEW
+ */
+@Entity
+@Table(name = "prescription_drug_view")
+public class PrescriptionDrugView implements Serializable {
+  private static final long serialVersionUID = 1L;
+
+  @Id
+  @Column(name = "id", nullable = false)
+  private Integer id;
+
+  @Column(name = "pre_biz_no")
+  private String preBizNo;
+
+  @Column(name = "pre_id")
+  private Integer preId;
+
+  @Column(name = "drug_code")
+  private String drugCode;
+
+  @Column(name = "drug_name")
+  private String drugName;
+
+  @Column(name = "drug_spec")
+  private String drugSpec;
+
+  @Column(name = "one_dosage")
+  private Float oneDosage;
+
+  @Column(name = "one_dosage_unit")
+  private String oneDosageUnit;
+
+  @Column(name = "amount")
+  private Integer amount;
+
+  @Column(name = "units")
+  private String units;
+
+  @Column(name = "frequency_code")
+  private String frequencyCode;
+
+  @Column(name = "frequency")
+  private String frequency;
+
+  @Column(name = "frequency_qty")
+  private Integer frequencyQty;
+
+  @Column(name = "usage_code")
+  private String usageCode;
+
+  @Column(name = "usage_detail")
+  private String usageDetail;
+
+  @Column(name = "price")
+  private Integer price;
+
+  /**
+   * 总价
+   */
+  @Column(name = "total")
+  private Integer total;
+
+  /**
+   * 备注
+   */
+  @Column(name = "remark")
+  private String remark;
+
+  /**
+   * 疗程,单位:天
+   */
+  @Column(name = "course")
+  private Integer course;
+
+  /**
+   * 药品Id
+   */
+  @Column(name = "drug_id")
+  private Integer drugId;
+
+  /**
+   * 药品数量
+   */
+  @Column(name = "quantity")
+  private Integer quantity;
+
+  @Column(name = "doctor_name")
+  private String doctorName;
+
+  @Column(name = "doctor_code")
+  private String doctorCode;
+
+  @Column(name = "patient_name")
+  private String patientName;
+
+  @Column(name = "patient_age")
+  private String patientAge;
+
+  @Column(name = "patient_sex")
+  private String patientSex;
+
+  @Column(name = "patient_no")
+  private String patientNo;
+
+  @Column(name = "diagnose")
+  private String diagnose;
+
+  @Column(name = "dept")
+  private String dept;
+
+  @Column(name = "create_on")
+  private Date createOn;
+
+  @Column(name = "source")
+  private Integer source;
+
+  @Column(name = "status")
+  private Integer status;
+
+  @Column(name = "hospital_code")
+  private String hospitalCode;
+
+  @Column(name = "hospital_id")
+  private Integer hospitalId;
+
+  /**
+   * 第三方公司编码
+   */
+  @Column(name = "org_code_3th")
+  private String orgCode3th;
+
+  @Column(name = "total_price")
+  private Integer totalPrice;
+
+  @Column(name = "payment_status")
+  private Integer paymentStatus;
+
+  @Column(name = "user_id")
+  private Integer userId;
+
+  @Column(name = "user_type")
+  private Integer userType;
+
+  @Column(name = "user_key_id")
+  private String userKeyId;
+
+  /**
+   * 患者手机号
+   */
+  @Column(name = "patient_mobile")
+  private String patientMobile;
+
+  /**
+   * 过敏史
+   */
+  @Column(name = "allergic_history")
+  private String allergicHistory;
+
+  /**
+   * 病情描述
+   */
+  @Column(name = "description")
+  private String description;
+
+  /**
+   * 医生签名Id
+   */
+  @Column(name = "doctor_sign_id")
+  private Integer doctorSignId;
+
+  /**
+   * 医生id
+   */
+  @Column(name = "doctor_id")
+  private Integer doctorId;
+
+  /**
+   * 药房地址ID,对应pharmacy表
+   */
+  @Column(name = "pharmacy_id")
+  private Integer pharmacyId = 0;
+
+  /**
+   * 开始时间
+   */
+  @Column(name = "start_send_time")
+  private Date startSendTime;
+
+  /**
+   * 患者支付时间
+   */
+  @Column(name = "pay_time")
+  private Date payTime;
+
+  /**
+   * 退费时间
+   */
+  @Column(name = "refund_time")
+  private Date refundTime;
+
+  /**
+   * 退款状态
+   */
+  @Column(name = "refund_status")
+  private Integer refundStatus;
+
+  /**
+   * 退款流水号
+   */
+  @Column(name = "refund_no")
+  private String refundNo;
+
+  /**
+   * 取药方式
+   */
+  @Column(name = "delivery_method")
+  private Integer deliveryMethod;
+
+  /**
+   * 身份证号
+   */
+  @Column(name = "id_card_no")
+  private String idCardNo;
+
+  /**
+   * 发药师昵称
+   */
+  @Column(name = "sender_nickname")
+  private String senderNickname = "";
+
+  /**
+   * 患者报到时间
+   */
+  @Column(name = "check_in_time")
+  private Date checkInTime;
+
+  /**
+   * 拓展状态,位运算,1-是否报到,2-是否发药,4-是否打印发票
+   */
+  @Column(name = "ext_status")
+  private Integer extStatus = 0;
+
+  /**
+   * 配送号
+   */
+  @Column(name = "send_no")
+  private String sendNo;
+
+  /**
+   * 订单号
+   */
+  @Column(name = "order_no")
+  private String orderNo;
+
+  public Integer getId() {
+    return id;
+  }
+
+  public void setId(Integer id) {
+    this.id = id;
+  }
+
+  public String getPreBizNo() {
+    return preBizNo;
+  }
+
+  public void setPreBizNo(String preBizNo) {
+    this.preBizNo = preBizNo;
+  }
+
+  public Integer getPreId() {
+    return preId;
+  }
+
+  public void setPreId(Integer preId) {
+    this.preId = preId;
+  }
+
+  public String getDrugCode() {
+    return drugCode;
+  }
+
+  public void setDrugCode(String drugCode) {
+    this.drugCode = drugCode;
+  }
+
+  public String getDrugName() {
+    return drugName;
+  }
+
+  public void setDrugName(String drugName) {
+    this.drugName = drugName;
+  }
+
+  public String getDrugSpec() {
+    return drugSpec;
+  }
+
+  public void setDrugSpec(String drugSpec) {
+    this.drugSpec = drugSpec;
+  }
+
+  public Float getOneDosage() {
+    return oneDosage;
+  }
+
+  public void setOneDosage(Float oneDosage) {
+    this.oneDosage = oneDosage;
+  }
+
+  public String getOneDosageUnit() {
+    return oneDosageUnit;
+  }
+
+  public void setOneDosageUnit(String oneDosageUnit) {
+    this.oneDosageUnit = oneDosageUnit;
+  }
+
+  public Integer getAmount() {
+    return amount;
+  }
+
+  public void setAmount(Integer amount) {
+    this.amount = amount;
+  }
+
+  public String getUnits() {
+    return units;
+  }
+
+  public void setUnits(String units) {
+    this.units = units;
+  }
+
+  public String getFrequencyCode() {
+    return frequencyCode;
+  }
+
+  public void setFrequencyCode(String frequencyCode) {
+    this.frequencyCode = frequencyCode;
+  }
+
+  public String getFrequency() {
+    return frequency;
+  }
+
+  public void setFrequency(String frequency) {
+    this.frequency = frequency;
+  }
+
+  public Integer getFrequencyQty() {
+    return frequencyQty;
+  }
+
+  public void setFrequencyQty(Integer frequencyQty) {
+    this.frequencyQty = frequencyQty;
+  }
+
+  public String getUsageCode() {
+    return usageCode;
+  }
+
+  public void setUsageCode(String usageCode) {
+    this.usageCode = usageCode;
+  }
+
+  public String getUsageDetail() {
+    return usageDetail;
+  }
+
+  public void setUsageDetail(String usageDetail) {
+    this.usageDetail = usageDetail;
+  }
+
+  public Integer getPrice() {
+    return price;
+  }
+
+  public void setPrice(Integer price) {
+    this.price = price;
+  }
+
+  /**
+   * 总价
+   */
+  public Integer getTotal() {
+    return total;
+  }
+
+  /**
+   * 总价
+   */
+  public void setTotal(Integer total) {
+    this.total = total;
+  }
+
+  /**
+   * 备注
+   */
+  public String getRemark() {
+    return remark;
+  }
+
+  /**
+   * 备注
+   */
+  public void setRemark(String remark) {
+    this.remark = remark;
+  }
+
+  /**
+   * 疗程,单位:天
+   */
+  public Integer getCourse() {
+    return course;
+  }
+
+  /**
+   * 疗程,单位:天
+   */
+  public void setCourse(Integer course) {
+    this.course = course;
+  }
+
+  /**
+   * 药品Id
+   */
+  public Integer getDrugId() {
+    return drugId;
+  }
+
+  /**
+   * 药品Id
+   */
+  public void setDrugId(Integer drugId) {
+    this.drugId = drugId;
+  }
+
+  /**
+   * 药品数量
+   */
+  public Integer getQuantity() {
+    return quantity;
+  }
+
+  /**
+   * 药品数量
+   */
+  public void setQuantity(Integer quantity) {
+    this.quantity = quantity;
+  }
+
+  public String getDoctorName() {
+    return doctorName;
+  }
+
+  public void setDoctorName(String doctorName) {
+    this.doctorName = doctorName;
+  }
+
+  public String getDoctorCode() {
+    return doctorCode;
+  }
+
+  public void setDoctorCode(String doctorCode) {
+    this.doctorCode = doctorCode;
+  }
+
+  public String getPatientName() {
+    return patientName;
+  }
+
+  public void setPatientName(String patientName) {
+    this.patientName = patientName;
+  }
+
+  public String getPatientAge() {
+    return patientAge;
+  }
+
+  public void setPatientAge(String patientAge) {
+    this.patientAge = patientAge;
+  }
+
+  public String getPatientSex() {
+    return patientSex;
+  }
+
+  public void setPatientSex(String patientSex) {
+    this.patientSex = patientSex;
+  }
+
+  public String getPatientNo() {
+    return patientNo;
+  }
+
+  public void setPatientNo(String patientNo) {
+    this.patientNo = patientNo;
+  }
+
+  public String getDiagnose() {
+    return diagnose;
+  }
+
+  public void setDiagnose(String diagnose) {
+    this.diagnose = diagnose;
+  }
+
+  public String getDept() {
+    return dept;
+  }
+
+  public void setDept(String dept) {
+    this.dept = dept;
+  }
+
+  public Date getCreateOn() {
+    return createOn;
+  }
+
+  public void setCreateOn(Date createOn) {
+    this.createOn = createOn;
+  }
+
+  public Integer getSource() {
+    return source;
+  }
+
+  public void setSource(Integer source) {
+    this.source = source;
+  }
+
+  public Integer getStatus() {
+    return status;
+  }
+
+  public void setStatus(Integer status) {
+    this.status = status;
+  }
+
+  public String getHospitalCode() {
+    return hospitalCode;
+  }
+
+  public void setHospitalCode(String hospitalCode) {
+    this.hospitalCode = hospitalCode;
+  }
+
+  public Integer getHospitalId() {
+    return hospitalId;
+  }
+
+  public void setHospitalId(Integer hospitalId) {
+    this.hospitalId = hospitalId;
+  }
+
+  /**
+   * 第三方公司编码
+   */
+  public String getOrgCode3th() {
+    return orgCode3th;
+  }
+
+  /**
+   * 第三方公司编码
+   */
+  public void setOrgCode3th(String orgCode3th) {
+    this.orgCode3th = orgCode3th;
+  }
+
+  public Integer getTotalPrice() {
+    return totalPrice;
+  }
+
+  public void setTotalPrice(Integer totalPrice) {
+    this.totalPrice = totalPrice;
+  }
+
+  public Integer getPaymentStatus() {
+    return paymentStatus;
+  }
+
+  public void setPaymentStatus(Integer paymentStatus) {
+    this.paymentStatus = paymentStatus;
+  }
+
+  public Integer getUserId() {
+    return userId;
+  }
+
+  public void setUserId(Integer userId) {
+    this.userId = userId;
+  }
+
+  public Integer getUserType() {
+    return userType;
+  }
+
+  public void setUserType(Integer userType) {
+    this.userType = userType;
+  }
+
+  public String getUserKeyId() {
+    return userKeyId;
+  }
+
+  public void setUserKeyId(String userKeyId) {
+    this.userKeyId = userKeyId;
+  }
+
+  /**
+   * 患者手机号
+   */
+  public String getPatientMobile() {
+    return patientMobile;
+  }
+
+  /**
+   * 患者手机号
+   */
+  public void setPatientMobile(String patientMobile) {
+    this.patientMobile = patientMobile;
+  }
+
+  /**
+   * 过敏史
+   */
+  public String getAllergicHistory() {
+    return allergicHistory;
+  }
+
+  /**
+   * 过敏史
+   */
+  public void setAllergicHistory(String allergicHistory) {
+    this.allergicHistory = allergicHistory;
+  }
+
+  /**
+   * 病情描述
+   */
+  public String getDescription() {
+    return description;
+  }
+
+  /**
+   * 病情描述
+   */
+  public void setDescription(String description) {
+    this.description = description;
+  }
+
+  /**
+   * 医生签名Id
+   */
+  public Integer getDoctorSignId() {
+    return doctorSignId;
+  }
+
+  /**
+   * 医生签名Id
+   */
+  public void setDoctorSignId(Integer doctorSignId) {
+    this.doctorSignId = doctorSignId;
+  }
+
+  /**
+   * 医生id
+   */
+  public Integer getDoctorId() {
+    return doctorId;
+  }
+
+  /**
+   * 医生id
+   */
+  public void setDoctorId(Integer doctorId) {
+    this.doctorId = doctorId;
+  }
+
+  /**
+   * 药房地址ID,对应pharmacy表
+   */
+  public Integer getPharmacyId() {
+    return pharmacyId;
+  }
+
+  /**
+   * 药房地址ID,对应pharmacy表
+   */
+  public void setPharmacyId(Integer pharmacyId) {
+    this.pharmacyId = pharmacyId;
+  }
+
+  /**
+   * 开始时间
+   */
+  public Date getStartSendTime() {
+    return startSendTime;
+  }
+
+  /**
+   * 开始时间
+   */
+  public void setStartSendTime(Date startSendTime) {
+    this.startSendTime = startSendTime;
+  }
+
+  /**
+   * 患者支付时间
+   */
+  public Date getPayTime() {
+    return payTime;
+  }
+
+  /**
+   * 患者支付时间
+   */
+  public void setPayTime(Date payTime) {
+    this.payTime = payTime;
+  }
+
+  /**
+   * 退费时间
+   */
+  public Date getRefundTime() {
+    return refundTime;
+  }
+
+  /**
+   * 退费时间
+   */
+  public void setRefundTime(Date refundTime) {
+    this.refundTime = refundTime;
+  }
+
+  /**
+   * 退款状态
+   */
+  public Integer getRefundStatus() {
+    return refundStatus;
+  }
+
+  /**
+   * 退款状态
+   */
+  public void setRefundStatus(Integer refundStatus) {
+    this.refundStatus = refundStatus;
+  }
+
+  /**
+   * 退款流水号
+   */
+  public String getRefundNo() {
+    return refundNo;
+  }
+
+  /**
+   * 退款流水号
+   */
+  public void setRefundNo(String refundNo) {
+    this.refundNo = refundNo;
+  }
+
+  /**
+   * 取药方式
+   */
+  public Integer getDeliveryMethod() {
+    return deliveryMethod;
+  }
+
+  /**
+   * 取药方式
+   */
+  public void setDeliveryMethod(Integer deliveryMethod) {
+    this.deliveryMethod = deliveryMethod;
+  }
+
+  /**
+   * 身份证号
+   */
+  public String getIdCardNo() {
+    return idCardNo;
+  }
+
+  /**
+   * 身份证号
+   */
+  public void setIdCardNo(String idCardNo) {
+    this.idCardNo = idCardNo;
+  }
+
+  /**
+   * 发药师昵称
+   */
+  public String getSenderNickname() {
+    return senderNickname;
+  }
+
+  /**
+   * 发药师昵称
+   */
+  public void setSenderNickname(String senderNickname) {
+    this.senderNickname = senderNickname;
+  }
+
+  /**
+   * 患者报到时间
+   */
+  public Date getCheckInTime() {
+    return checkInTime;
+  }
+
+  /**
+   * 患者报到时间
+   */
+  public void setCheckInTime(Date checkInTime) {
+    this.checkInTime = checkInTime;
+  }
+
+  /**
+   * 拓展状态,位运算,1-是否报到,2-是否发药,4-是否打印发票
+   */
+  public Integer getExtStatus() {
+    return extStatus;
+  }
+
+  /**
+   * 拓展状态,位运算,1-是否报到,2-是否发药,4-是否打印发票
+   */
+  public void setExtStatus(Integer extStatus) {
+    this.extStatus = extStatus;
+  }
+
+  /**
+   * 配送号
+   */
+  public String getSendNo() {
+    return sendNo;
+  }
+
+  /**
+   * 配送号
+   */
+  public void setSendNo(String sendNo) {
+    this.sendNo = sendNo;
+  }
+
+  public String getOrderNo() {
+    return orderNo;
+  }
+
+  public void setOrderNo(String orderNo) {
+    this.orderNo = orderNo;
+  }
+
+  public String toString() {
+    return "PrescriptionDrugView{id=" + id + 
+      ", preBizNo=" + preBizNo + 
+      ", preId=" + preId + 
+      ", drugCode=" + drugCode + 
+      ", drugName=" + drugName + 
+      ", drugSpec=" + drugSpec + 
+      ", oneDosage=" + oneDosage + 
+      ", oneDosageUnit=" + oneDosageUnit + 
+      ", amount=" + amount + 
+      ", units=" + units + 
+      ", frequencyCode=" + frequencyCode + 
+      ", frequency=" + frequency + 
+      ", frequencyQty=" + frequencyQty + 
+      ", usageCode=" + usageCode + 
+      ", usageDetail=" + usageDetail + 
+      ", price=" + price + 
+      ", total=" + total + 
+      ", remark=" + remark + 
+      ", course=" + course + 
+      ", drugId=" + drugId + 
+      ", quantity=" + quantity + 
+      ", doctorName=" + doctorName + 
+      ", doctorCode=" + doctorCode + 
+      ", patientName=" + patientName + 
+      ", patientAge=" + patientAge + 
+      ", patientSex=" + patientSex + 
+      ", patientNo=" + patientNo + 
+      ", diagnose=" + diagnose + 
+      ", dept=" + dept + 
+      ", createOn=" + createOn + 
+      ", source=" + source + 
+      ", status=" + status + 
+      ", hospitalCode=" + hospitalCode + 
+      ", hospitalId=" + hospitalId + 
+      ", orgCode3th=" + orgCode3th + 
+      ", totalPrice=" + totalPrice + 
+      ", paymentStatus=" + paymentStatus + 
+      ", userId=" + userId + 
+      ", userType=" + userType + 
+      ", userKeyId=" + userKeyId + 
+      ", patientMobile=" + patientMobile + 
+      ", allergicHistory=" + allergicHistory + 
+      ", description=" + description + 
+      ", doctorSignId=" + doctorSignId + 
+      ", doctorId=" + doctorId + 
+      ", pharmacyId=" + pharmacyId + 
+      ", startSendTime=" + startSendTime + 
+      ", payTime=" + payTime + 
+      ", refundTime=" + refundTime + 
+      ", refundStatus=" + refundStatus + 
+      ", refundNo=" + refundNo + 
+      ", deliveryMethod=" + deliveryMethod + 
+      ", idCardNo=" + idCardNo + 
+      ", senderNickname=" + senderNickname + 
+      ", checkInTime=" + checkInTime + 
+      ", extStatus=" + extStatus + 
+      ", sendNo=" + sendNo + 
+      ", orderNo=" + orderNo +
+      "}";
+  }
+}

+ 29 - 0
src/main/java/com/ywt/mg/domain/ywtDrugEntities/PrescriptionDrugViewRepository.java

@@ -0,0 +1,29 @@
+package com.ywt.mg.domain.ywtDrugEntities;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+
+public interface PrescriptionDrugViewRepository extends JpaRepository<PrescriptionDrugView, Integer> {
+
+    /**
+     * 查找某一段时间内,某一药品的使用数量(要发药成功才算)
+     *
+     * @param drugCode
+     * @param startTime
+     * @param endTime
+     * @return
+     */
+    @Query(value = "select sum(quantity) from prescription_drug_view where drug_code = ? and  start_send_time >= ?  and start_send_time <= ?", nativeQuery = true)
+    public int getDrugUseCountByDurgCode(String drugCode, String startTime, String endTime);
+
+    /**
+     * 查找某一段时间内,发药出去的总金额(要发药成功才算)
+     *
+     * @param startTime
+     * @param endTime
+     * @return
+     */
+    @Query(value = "select sum(total_price) from prescription_drug_view where  start_send_time >= ?  and start_send_time <= ?", nativeQuery = true)
+    public int getDrugUseTotalPriceBySearchTime(String startTime, String endTime);
+
+}

+ 5 - 5
src/main/java/com/ywt/mg/domain/ywtDrugEntities/PrescriptionInfoRepository.java

@@ -12,7 +12,7 @@ public interface PrescriptionInfoRepository extends JpaRepository<PrescriptionIn
      * @param preBizNo
      * @return
      */
-    @Query(value = "select * from prescription_info where pre_biz_no = ? limit 1 ", nativeQuery = true)
+    @Query(value = "select * from ywt_drug.prescription_info where pre_biz_no = ? limit 1 ", nativeQuery = true)
     PrescriptionInfo findOneByPreBizNo(String preBizNo);
 
 
@@ -23,7 +23,7 @@ public interface PrescriptionInfoRepository extends JpaRepository<PrescriptionIn
      * @param patientNo
      * @return
      */
-    @Query(value = "select count(1) from prescription_info where patient_name = ? or patient_no = ? limit 1", nativeQuery = true)
+    @Query(value = "select count(1) from ywt_drug.prescription_info where patient_name = ? or patient_no = ? limit 1", nativeQuery = true)
     int checkCount(String patientName,String patientNo);
 
     /**
@@ -32,7 +32,7 @@ public interface PrescriptionInfoRepository extends JpaRepository<PrescriptionIn
      *  找到符合条件的记录,关键点:支付成功,自取,已发药,订单状态(配送中),小于当前时间
      * @return
      */
-    @Query(value = "select * from prescription_info where source != 1 and payment_status = 2 and delivery_method = 2 and status = 2 and ((ext_status & 2) = 2) and start_send_time < now(); ", nativeQuery = true)
+    @Query(value = "select * from ywt_drug prescription_info where source != 1 and payment_status = 2 and delivery_method = 2 and status = 2 and ((ext_status & 2) = 2) and start_send_time < now(); ", nativeQuery = true)
     List<PrescriptionInfo> getScheduledList();
 
     /**
@@ -40,9 +40,9 @@ public interface PrescriptionInfoRepository extends JpaRepository<PrescriptionIn
      * @param orderNo
      * @return
      */
-    @Query(value = "select * from prescription_info where order_no = ? limit 1 ", nativeQuery = true)
+    @Query(value = "select * from ywt_drug.prescription_info where order_no = ? limit 1 ", nativeQuery = true)
     PrescriptionInfo findOneByOrderNo(String orderNo);
 
-    @Query(value = "select * from prescription_info where order_id = ? limit 1 ", nativeQuery = true)
+    @Query(value = "select * from ywt_drug.prescription_info where order_id = ? limit 1 ", nativeQuery = true)
     PrescriptionInfo findOneByOrderId(int orderId);
 }

+ 56 - 2
src/main/java/com/ywt/mg/services/DownloadRecordService.java

@@ -75,7 +75,7 @@ public class DownloadRecordService {
      * @param paramUrl  下载参数url
      * @return 下载记录
      */
-    public DownloadRecord getOrInsertDownloadRecord(int id, String name, String fileName, String paramUrl, String paramJson) {
+    public DownloadRecord getOrInsertDownloadRecordByHosp(int id, String name, String fileName, String paramUrl, String paramJson) {
         int pharmacyId = 0, hospitalId = 0, currentAdminId = 0;
         String pharmacyName = "", hospitalName = "", currentAdminName = "";
         MGAdmins currentAdmin = authService.getCurrentAdmin();
@@ -126,6 +126,59 @@ public class DownloadRecordService {
         return record;
     }
 
+
+    public DownloadRecord getOrInsertDownloadRecord(int id, String name, String fileName, String paramUrl, String paramJson) {
+        int pharmacyId = 0, hospitalId = 0, currentAdminId = 0;
+        String pharmacyName = "", hospitalName = "", currentAdminName = "";
+        MGAdmins currentAdmin = authService.getCurrentAdmin();
+        if (!Checker.isNone(currentAdmin)) {
+            currentAdminId = currentAdmin.getId();
+            currentAdminName = currentAdmin.getAccount();
+        }
+        Pharmacy pharmacy = authService.getCurrentPharmacy();
+        if (!Checker.isNone(pharmacy)) {
+            pharmacyId = pharmacy.getId();
+            pharmacyName = pharmacy.getName();
+        }
+//        Hospital hospital = authService.getCurrentHospitalByCache();
+//        if (!Checker.isNone(hospital)) {
+////            hospitalId = hospital.getId();
+//            hospitalName = hospital.getName();
+//        }
+        Map map = new HashMap();
+        map.put("param", paramJson);
+        map.put("adminId", currentAdminId);
+        map.put("hospitalId", hospitalId);
+        map.put("pharmacyId", pharmacyId);
+        String paramMd5 = StringHelper.md5(JsonSerializer.toJson(map));
+        // todo: 判断是否有同样的下载
+//        DownloadRecord record = downloadRecordRepository.findCreatingLeastOne(currentAdminId, paramMd5, paramUrl);
+//        if (!Checker.isNone(record)) {
+//            return record;
+//        }
+        DownloadRecord record;
+        record = new DownloadRecord();
+        record.setId(id);
+        record.setName(name);
+        record.setFileName(fileName);
+        record.setPharmacyId(pharmacyId);
+        record.setPharmacyName(pharmacyName);
+        record.setHospitalId(hospitalId);
+        record.setHospitalName(hospitalName);
+        record.setAdminId(currentAdminId);
+        record.setAdminName(currentAdminName);
+        record.setCreateTime(new Date());
+        record.setDeleted(false);
+        record.setParamMd5(paramMd5);
+        record.setParamJson(paramJson);
+        record.setParamUrl(paramUrl);
+        record.setStatus(DownloadRecordStatusEnum.Default.getValue());
+        record.setUpdateTime(new Date());
+        downloadRecordRepository.saveAndFlush(record);
+        return record;
+    }
+
+
     public void saveUrlAndStatus(int id, String url, int status) {
         DownloadRecord record = downloadRecordRepository.findOne(id);
         if (!Checker.isNone(record)) {
@@ -179,9 +232,10 @@ public class DownloadRecordService {
     private PagedList<DownloadRecord> queryDownloadRecordListCommon(QueryDownloadRecordListRequest request) throws ParseException {
         List<Object> paramList = new ArrayList<>();
         String whereSql = " ( 1=1 ) ";
+        whereSql += "and (deleted = 0)";
 
         int hospitalId = request.getHospitalId();
-        if (hospitalId > 0) {
+        if (hospitalId >= 0) {
             whereSql += " and ( hospital_id = ?)";
             paramList.add(hospitalId);
         }

+ 367 - 6
src/main/java/com/ywt/mg/services/PrescriptionServices.java

@@ -1,5 +1,6 @@
 package com.ywt.mg.services;
 
+import com.ywt.mg.core.PagedList;
 import com.ywt.mg.core.utils.Checker;
 import com.ywt.mg.core.utils.DateUtil;
 import com.ywt.mg.core.utils.FormatUtil;
@@ -9,6 +10,7 @@ import com.ywt.mg.domain.models.ExcelDataMap;
 import com.ywt.mg.domain.models.enums.*;
 import com.ywt.mg.domain.models.pojo.ExcelCollectPojo;
 import com.ywt.mg.domain.ywtDrugEntities.Pharmacy;
+import com.ywt.mg.domain.ywtDrugEntities.PrescriptionDrugView;
 import com.ywt.mg.domain.ywtDrugEntities.PrescriptionInfo;
 import com.ywt.mg.params.prescription.QueryPrescriptionListRequest;
 import org.slf4j.Logger;
@@ -43,7 +45,6 @@ public class PrescriptionServices {
     private DownloadRecordService downloadRecordService;
 
 
-
     /**
      * 根据条件查询用药记录
      *
@@ -58,7 +59,7 @@ public class PrescriptionServices {
         // 分页查找
         StringBuilder sqlBuilder = new StringBuilder();
         // 拼凑sql语句
-        sqlBuilder.append("select * from prescription_info where ")
+        sqlBuilder.append("select * from ywt_drug.prescription_info where ")
                 .append(whereSql)
                 .append("order by create_on desc");
         List<PrescriptionInfo> list = ywtDrugJdbcTemplate.query(sqlBuilder.toString(), paramList.toArray(), new BeanPropertyRowMapper<>(PrescriptionInfo.class));
@@ -393,7 +394,7 @@ public class PrescriptionServices {
                     map.getStringListSafely(col13).add(refundTime);
                     map.getStringListSafely(col14).add(refundStatus);
                     map.getStringListSafely(col15).add(Checker.getStringValue(p.getRefundNo()));
-                    map.getStringListSafely(col16).add( Checker.getStringValue(p.getRemarks()));
+                    map.getStringListSafely(col16).add(Checker.getStringValue(p.getRemarks()));
                     int cancelStatusInt = Checker.getIntegerValue(p.getCancelStatus());
                     String cancelStatusStr = getPrescriptionInfoCancelStatusStr(cancelStatusInt);
                     map.getStringListSafely(col17).add(cancelStatusStr);
@@ -426,7 +427,7 @@ public class PrescriptionServices {
                     if (paymentStatusInt == PaymentStatusEnum.Success.getValue()) {
                         payTotal += Checker.getIntegerValue(p.getTotalPrice());
 
-                        if (payChanelInt ==PresPaymentChannelEnum.WeChat.getValue()) {
+                        if (payChanelInt == PresPaymentChannelEnum.WeChat.getValue()) {
                             weChatPay += Checker.getIntegerValue(p.getTotalPrice());
                         } else if (payChanelInt == PresPaymentChannelEnum.AliPay.getValue()) {
                             aliPay += Checker.getIntegerValue(p.getTotalPrice());
@@ -447,11 +448,18 @@ public class PrescriptionServices {
 
             }
             int size = prescriptionInfoList.size();
-//            List<ExcelCollectPojo> itemList = getStatisticsData(size, payTotal);
-//            downloadRecordService.createFileAndUploadOssAndSaveToDataBase(fileName, downloadRecordId, map, itemList);
+            List<ExcelCollectPojo> itemList = getStatisticsData(size, payTotal, refundTotal, weChatPay, weChatRefundTotal,
+                    aliPay, aliRefundTotal,
+                    cashPay, cashRefundTotal,
+                    medicalCardPay, medicalCardRefundTotal,
+                    posPay, posRefundTotal,
+                    medicalInsurancePay, medicalInsuranceRefundTotal,
+                    icbcPay, icbcRefundTotal);
+            downloadRecordService.createFileAndUploadOssAndSaveToDataBase(fileName, downloadRecordId, map, itemList);
 
 
         } catch (Exception e) {
+            logger.error("/prescription/downloadPrescriptionlist(): {}", e.getMessage(), e);
             e.printStackTrace();
         }
     }
@@ -503,4 +511,357 @@ public class PrescriptionServices {
         }
     }
 
+    private List<ExcelCollectPojo> getStatisticsData(int size, int payTotal, int refundTotal, int weChatPay, int weChatRefundTotal,
+                                                     int aliPay, int aliRefundTotal,
+                                                     int cashPay, int cashRefundTotal,
+                                                     int medicalCardPay, int medicalCardRefundTotal,
+                                                     int posPay, int posRefundTotal,
+                                                     int medicalInsurancePay, int medicalInsuranceRefundTotal,
+                                                     int icbcPay, int icbcRefundTotal) {
+        int startRows = size + 3;
+        int startColumn = 3;
+
+        List<ExcelCollectPojo> customExcelItemList = new ArrayList<>();
+        customExcelItemList.add(new ExcelCollectPojo(startColumn + 1, startRows, new String[]{"支付总额", FormatUtil.intShrink100ToStr(payTotal)}));
+        customExcelItemList.add(new ExcelCollectPojo(startColumn + 3, startRows, new String[]{"退款总额", FormatUtil.intShrink100ToStr(refundTotal)}));
+        customExcelItemList.add(new ExcelCollectPojo(startColumn + 5, startRows, new String[]{"实际支付金额", FormatUtil.intShrink100ToStr(payTotal - refundTotal)}));
+        startRows += 1;
+
+        customExcelItemList.add(new ExcelCollectPojo(startColumn + 1, startRows, new String[]{"微信支付总额", FormatUtil.intShrink100ToStr(weChatPay)}));
+        customExcelItemList.add(new ExcelCollectPojo(startColumn + 3, startRows, new String[]{"微信退费总额", FormatUtil.intShrink100ToStr(weChatRefundTotal)}));
+        customExcelItemList.add(new ExcelCollectPojo(startColumn + 5, startRows, new String[]{"微信实际支付金额", FormatUtil.intShrink100ToStr(weChatPay - weChatRefundTotal)}));
+        startRows += 1;
+
+        customExcelItemList.add(new ExcelCollectPojo(startColumn + 1, startRows, new String[]{"支付宝支付", FormatUtil.intShrink100ToStr(aliPay)}));
+        customExcelItemList.add(new ExcelCollectPojo(startColumn + 3, startRows, new String[]{"支付宝退费总额", FormatUtil.intShrink100ToStr(refundTotal)}));
+        customExcelItemList.add(new ExcelCollectPojo(startColumn + 5, startRows, new String[]{"支付宝实际金额", FormatUtil.intShrink100ToStr(aliPay - aliRefundTotal)}));
+        startRows += 1;
+
+        customExcelItemList.add(new ExcelCollectPojo(startColumn + 1, startRows, new String[]{"现金支付", FormatUtil.intShrink100ToStr(cashPay)}));
+        customExcelItemList.add(new ExcelCollectPojo(startColumn + 3, startRows, new String[]{"现金退费总额", FormatUtil.intShrink100ToStr(cashRefundTotal)}));
+        customExcelItemList.add(new ExcelCollectPojo(startColumn + 5, startRows, new String[]{"现金实际金额", FormatUtil.intShrink100ToStr(cashPay - cashRefundTotal)}));
+        startRows += 1;
+
+        customExcelItemList.add(new ExcelCollectPojo(startColumn + 1, startRows, new String[]{"诊疗卡支付", FormatUtil.intShrink100ToStr(medicalCardPay)}));
+        customExcelItemList.add(new ExcelCollectPojo(startColumn + 3, startRows, new String[]{"诊疗卡退款总额", FormatUtil.intShrink100ToStr(medicalCardRefundTotal)}));
+        customExcelItemList.add(new ExcelCollectPojo(startColumn + 5, startRows, new String[]{"诊疗卡实际支付金额", FormatUtil.intShrink100ToStr(medicalCardPay - medicalCardRefundTotal)}));
+        startRows += 1;
+
+        customExcelItemList.add(new ExcelCollectPojo(startColumn + 1, startRows, new String[]{"POS支付", FormatUtil.intShrink100ToStr(posPay)}));
+        customExcelItemList.add(new ExcelCollectPojo(startColumn + 3, startRows, new String[]{"POS退款总额", FormatUtil.intShrink100ToStr(posRefundTotal)}));
+        customExcelItemList.add(new ExcelCollectPojo(startColumn + 5, startRows, new String[]{"POS实际支付金额", FormatUtil.intShrink100ToStr(posPay - posRefundTotal)}));
+        startRows += 1;
+
+        customExcelItemList.add(new ExcelCollectPojo(startColumn + 1, startRows, new String[]{"医保支付", FormatUtil.intShrink100ToStr(medicalInsurancePay)}));
+        customExcelItemList.add(new ExcelCollectPojo(startColumn + 3, startRows, new String[]{"医保退款总额", FormatUtil.intShrink100ToStr(medicalInsuranceRefundTotal)}));
+        customExcelItemList.add(new ExcelCollectPojo(startColumn + 5, startRows, new String[]{"医保实际支付金额", FormatUtil.intShrink100ToStr(medicalInsurancePay - medicalInsuranceRefundTotal)}));
+        startRows += 1;
+
+        customExcelItemList.add(new ExcelCollectPojo(startColumn + 1, startRows, new String[]{"工行支付", FormatUtil.intShrink100ToStr(icbcPay)}));
+        customExcelItemList.add(new ExcelCollectPojo(startColumn + 3, startRows, new String[]{"工行退款总额", FormatUtil.intShrink100ToStr(refundTotal)}));
+        customExcelItemList.add(new ExcelCollectPojo(startColumn + 5, startRows, new String[]{"工行实际支付金额", FormatUtil.intShrink100ToStr(icbcPay - icbcRefundTotal)}));
+
+
+        return customExcelItemList;
+    }
+
+
+    public List<PrescriptionDrugView> getPrescriptionDrugView(QueryPrescriptionListRequest request) {
+        Map<String, Object> map = getQueryMapCommon(request);
+        List<Object> paramList = (List<Object>) map.get("paramList");
+        String whereSql = (String) map.get("whereSql");
+
+        StringBuilder sqlBuilder = new StringBuilder();
+        // 拼凑sql语句
+        sqlBuilder.append("select * from ywt_drug.prescription_drug_view where ")
+                .append(whereSql)
+                .append("order by id desc");
+        List<PrescriptionDrugView> list = ywtDrugJdbcTemplate.query(sqlBuilder.toString(), paramList.toArray(), new BeanPropertyRowMapper<>(PrescriptionDrugView.class));
+        return list;
+    }
+
+    public Map<String, Object> getQueryMapCommon(QueryPrescriptionListRequest request) {
+        List<Object> paramList = new ArrayList<>();
+        String whereSql = " ( 1=1 )";
+
+        String doctorname = request.getDoctorname();
+        if (!Checker.isNull(doctorname)) {
+            whereSql += " and ( doctor_name like ?)";
+            paramList.add("%" + doctorname + "%");
+        }
+
+
+        String patientname = request.getPatientname();
+        if (!Checker.isNull(patientname)) {
+            whereSql += " and ( patient_name like ?)";
+            paramList.add("%" + patientname + "%");
+        }
+
+        String deptname = request.getDeptname();
+        if (!Checker.isNull(deptname)) {
+            whereSql += " and ( dept like ?)";
+            paramList.add("%" + deptname + "%");
+        }
+
+        String source = request.getSource();
+        if (!Checker.isNull(source)) {
+            whereSql += " and ( source = ?)";
+            paramList.add(Integer.parseInt(source));
+        }
+        String pharmacyId = request.getPharmacyId();
+        if (!Checker.isNull(pharmacyId)) {
+            whereSql += " and ( pharmacy_id = ?)";
+            paramList.add(Integer.parseInt(pharmacyId));
+        }
+
+        String deliveryMethod = request.getDeliveryMethod();
+        if (!Checker.isNull(deliveryMethod)) {
+            whereSql += " and ( delivery_method = ?)";
+            paramList.add(Integer.parseInt(deliveryMethod));
+        }
+
+        // 1待支付,2-配送中/待取药,3、已完成(不包括已评价的),4、已退费,5、不通过 (存在ext_status字段),6、已评价, 7-已过期,8-待评价, 10-退费中
+        String status = request.getStatus();
+        if (!Checker.isNone(status)) {
+            int statusInt = Integer.parseInt(status);
+            if (statusInt == 1) {
+                // 只查找待支付的,不查找已过期的,需要计算时间
+                //把日期往后前推3天.整数往后推,负数往前移动
+                Date date = DateUtil.getRelativeDate(new Date(), ConstantDef.OVERDUE_DAY_NUM);
+                whereSql += " and ( status = ? and create_on > ? ) ";
+                paramList.add(statusInt);
+                paramList.add(date);
+            } else if (statusInt == 2) {
+                // 查找只是配送中/待取药 (不包含不通过的)
+                whereSql += " and ( ((ext_status & ?) != ? or ext_status is null) && status = ?  ) ";
+                paramList.add(PrescriptionInfoExtStatusEnum.PresNoPass.getValue());
+                paramList.add(PrescriptionInfoExtStatusEnum.PresNoPass.getValue());
+                paramList.add(PrescriptionInfoStatusEnum.Dispatching.getValue());
+            } else if (statusInt == 3) {
+                // 查找只是已完成的,只有广三的有已完成的状态
+                whereSql += " and ( status = ? and pharmacy_id = ? ) ";
+                paramList.add(PrescriptionInfoStatusEnum.Finished.getValue());
+                paramList.add(ConstantDef.GUANGSAN_PHARMACY_ID);
+            } else if (statusInt == 5) {
+                // 查找只是不通过的,退费的不找出来,已评价的也不找出来
+                whereSql += " and ( (ext_status & ?) = ? and ext_status < ? and status != ? ) ";
+                paramList.add(PrescriptionInfoExtStatusEnum.PresNoPass.getValue());
+                paramList.add(PrescriptionInfoExtStatusEnum.PresNoPass.getValue());
+                paramList.add(2 * PrescriptionInfoExtStatusEnum.PresNoPass.getValue());
+                paramList.add(PrescriptionInfoStatusEnum.HaveARefund.getValue());
+            } else if (statusInt == 6) {
+                // 查找已评价的
+                whereSql += " and ( (ext_status & ?) = ? and status != ? and pharmacy_id = ? ) ";
+                paramList.add(PrescriptionInfoExtStatusEnum.Evaluate.getValue());
+                paramList.add(PrescriptionInfoExtStatusEnum.Evaluate.getValue());
+                paramList.add(PrescriptionInfoStatusEnum.HaveARefund.getValue());
+                paramList.add(ConstantDef.TAIHE_PHARMACY_ID);
+            } else if (statusInt == 7) {
+                // 根据原型图,订单3天未支付,状态变为已过期
+                //把日期往后前推3天.整数往后推,负数往前移动
+                Date date = DateUtil.getRelativeDate(new Date(), ConstantDef.OVERDUE_DAY_NUM);
+                whereSql += " and ( status = ? or (status = ? and create_on < ?)) ";
+                paramList.add(PrescriptionInfoStatusEnum.EXPIRED.getValue());
+                paramList.add(PrescriptionInfoStatusEnum.WaitForPayment.getValue());
+                paramList.add(date);
+            } else if (statusInt == 8) {
+                // 查找只是待评价的, 顺丰返回完成状态,需要排除不通过的
+                whereSql += " and ( (ext_status & ?) != ? and status = ?  and (ext_status & ?) != ? and pharmacy_id = ?  ) ";
+                paramList.add(PrescriptionInfoExtStatusEnum.Evaluate.getValue());
+                paramList.add(PrescriptionInfoExtStatusEnum.Evaluate.getValue());
+                paramList.add(PrescriptionInfoStatusEnum.Finished.getValue());
+                paramList.add(PrescriptionInfoExtStatusEnum.PresNoPass.getValue());
+                paramList.add(PrescriptionInfoExtStatusEnum.PresNoPass.getValue());
+                paramList.add(ConstantDef.TAIHE_PHARMACY_ID);
+            } else {
+                if (statusInt != 10) {
+                    whereSql += " and ( status = ? ) ";
+                    paramList.add(statusInt);
+                }
+            }
+
+            // 退费中
+            if (statusInt == 10) {
+                whereSql += " and ( refund_status = ?  ) ";
+                paramList.add(RefundStatusEnum.PENDING.getValue());
+            } else {
+                whereSql += " and ( refund_status != ?  ) ";
+                paramList.add(RefundStatusEnum.PENDING.getValue());
+            }
+
+        }
+
+        String paymentStatus = request.getPaymentStatus();
+        if (!Checker.isNone(paymentStatus)) {
+            whereSql += " and ( payment_status = ? ) ";
+            paramList.add(Integer.parseInt(paymentStatus));
+        }
+
+        String preBizNo = request.getPreBizNo();
+        if (!Checker.isNone(preBizNo)) {
+            whereSql += " and ( pre_biz_no like ? ) ";
+            paramList.add("%" + preBizNo + "%");
+        }
+        String bizNo3th = request.getBizNo3th();
+        if (!Checker.isNone(bizNo3th)) {
+            whereSql += " and ( biz_no_3th like ? ) ";
+            paramList.add("%" + bizNo3th + "%");
+        }
+        String sendNo = request.getSendNo();
+        if (!Checker.isNone(sendNo)) {
+            whereSql += " and ( send_no like ? ) ";
+            paramList.add("%" + sendNo + "%");
+        }
+        String paymentChannel = request.getPaymentChannel();
+        if (!Checker.isNone(paymentChannel)) {
+            whereSql += " and ( payment_channel = ? ) ";
+            paramList.add(Integer.parseInt(paymentChannel));
+        }
+
+        String paymentNo = request.getPaymentNo();
+        if (!Checker.isNone(paymentNo)) {
+            whereSql += " and ( payment_no like ? ) ";
+            paramList.add("%" + paymentNo.trim() + "%");
+        }
+
+        String cancelStatus = request.getCancelStatus();
+        if (!Checker.isNone(cancelStatus)) {
+            whereSql += " and ( cancel_status = ? ) ";
+            paramList.add(Integer.parseInt(cancelStatus));
+        }
+
+        String orderNo = request.getOrderNo();
+        if (!Checker.isNone(orderNo)) {
+            whereSql += " and ( order_no like ? ) ";
+            paramList.add("%" + orderNo.trim() + "%");
+        }
+
+        String Format_Date = "yyyy-MM-dd";
+        SimpleDateFormat format = new SimpleDateFormat(Format_Date);
+
+        String createTimeEnd = request.getCreateTimeEnd();
+        String createTimeStart = request.getCreateTimeStart();
+        String payTimeEnd = request.getPayTimeEnd();
+        String payTimeStart = request.getPayTimeStart();
+        String refundTimeEnd = request.getRefundTimeEnd();
+        String refundTimeStart = request.getRefundTimeStart();
+
+        try {
+            // 创建时间
+            if (!Checker.isNull(createTimeEnd)) {
+                whereSql += " and ( create_on < ?)";
+                Date date = format.parse(createTimeEnd);
+                //把日期往后增加一天.整数往后推,负数往前移动
+                Calendar calendar = new GregorianCalendar();
+                calendar.setTime(date);
+                calendar.add(calendar.DATE, 1);
+                date = calendar.getTime();   //这个时间就是日期往后推一天的结果
+
+                paramList.add(date);
+            }
+            if (!Checker.isNull(createTimeStart)) {
+                whereSql += " and ( create_on >= ?)";
+                Date date = format.parse(createTimeStart);
+                paramList.add(date);
+            }
+
+            // 支付时间
+            if (!Checker.isNull(payTimeEnd)) {
+                whereSql += " and ( pay_time < ?)";
+                Date date = format.parse(payTimeEnd);
+                //把日期往后增加一天.整数往后推,负数往前移动
+                Calendar calendar = new GregorianCalendar();
+                calendar.setTime(date);
+                calendar.add(calendar.DATE, 1);
+                date = calendar.getTime();   //这个时间就是日期往后推一天的结果
+
+                paramList.add(date);
+            }
+            if (!Checker.isNull(payTimeStart)) {
+                whereSql += " and ( pay_time >= ?)";
+                Date date = format.parse(payTimeStart);
+                paramList.add(date);
+            }
+
+            // 退费时间搜索
+            if (!Checker.isNull(refundTimeEnd)) {
+                whereSql += " and (refund_time < ?)";
+                Date date = format.parse(refundTimeEnd);
+                //把日期往后增加一天.整数往后推,负数往前移动
+                Calendar calendar = new GregorianCalendar();
+                calendar.setTime(date);
+                calendar.add(calendar.DATE, 1);
+                date = calendar.getTime();   //这个时间就是日期往后推一天的结果
+
+                paramList.add(date);
+            }
+            if (!Checker.isNull(refundTimeStart)) {
+                whereSql += " and ( refund_time >= ?)";
+                Date date = format.parse(refundTimeStart);
+                paramList.add(date);
+            }
+            // 对账时间搜索
+
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        Map map = new HashMap();
+        map.put("whereSql", whereSql);
+        map.put("paramList", paramList);
+        return map;
+    }
+
+    public void downloadPrescriptionDrugList(int downloadRecordId, String fileName, QueryPrescriptionListRequest request) {
+        try {
+            String col0 = "订单号";
+            String col1 = "药品名";
+            String col2 = "规格";
+            String col3 = "数量";
+            String col4 = "单价";
+            String col5 = "总价";
+            String col6 = "支付时间";
+            String col7 = "退费时间";
+            String col8 = "药房";
+            String[] columns = new String[]{col0, col1, col2, col3, col4, col5, col6, col7, col8};
+            List<PrescriptionDrugView> list = getPrescriptionDrugView(request);
+            ExcelDataMap map = new ExcelDataMap(columns);
+            if (!Checker.isNone(list)) {
+                Map<Integer, Pharmacy> ma = pharmacyCacheService.getPharmacyMap();
+                for (PrescriptionDrugView d : list) {
+                    String orderNo = Checker.getStringValue(d.getOrderNo());
+                    String drugName = Checker.getStringValue(d.getDrugSpec());
+                    String quan = Checker.getStringValue(d.getQuantity() + "");
+                    String price = FormatUtil.intShrink100ToStr(d.getPrice());
+                    String total = FormatUtil.intShrink100ToStr(d.getTotal());
+                    String payTime = FormatUtil.createTimeFormatDetail(d.getPayTime());
+                    String refundTime = FormatUtil.createTimeFormatDetail(d.getRefundTime());
+                    //药房
+                    Pharmacy pharmacy = ma.getOrDefault(Checker.getIntegerValue(d.getPharmacyId()), null);
+                    String pharmacyName = "";
+                    if (!Checker.isNone(pharmacy)) {
+                        pharmacyName = Checker.getStringValue(pharmacy.getName());
+                    }
+                    map.getStringListSafely(col0).add(orderNo);
+                    map.getStringListSafely(col1).add(drugName);
+                    map.getStringListSafely(col2).add(quan);
+                    map.getStringListSafely(col4).add(price);
+                    map.getStringListSafely(col5).add(total);
+                    map.getStringListSafely(col6).add(payTime);
+                    map.getStringListSafely(col7).add(refundTime);
+                    map.getStringListSafely(col8).add(pharmacyName);
+
+
+                }
+
+            }
+            int size = list.size();
+            List<ExcelCollectPojo> itemList = new ArrayList<>();
+            downloadRecordService.createFileAndUploadOssAndSaveToDataBase(fileName, downloadRecordId, map, itemList);
+        } catch (Exception e) {
+            logger.error("/prescription/downloadPrescriptionDrugList(): {}", e.getMessage(), e);
+            e.printStackTrace();
+        }
+    }
+
 }

+ 1 - 1
src/main/java/com/ywt/mg/web/controllers/CheckUpOrderController.java

@@ -52,7 +52,7 @@ public class CheckUpOrderController {
 //            request.setHospitalId(hosp);
 //        }
         int downloadRecordId = idGenerator.genDownloadRecordId();
-        String name = "公司后台-订单管理-体检缴费";
+        String name = "体检缴费";
         String fileName = "体检缴费";
         String excelSuffixFormat = ConstantDef.EXCEL_SUFFIX_FORMAT;
         String paramUrl = "/checkUp/downloadCheckUpOrderList";

+ 1 - 1
src/main/java/com/ywt/mg/web/controllers/DepositController.java

@@ -54,7 +54,7 @@ public class DepositController {
 //        }
         request.setHosp(0);
         int downloadRecordId = idGenerator.genDownloadRecordId();
-        String name = "公司后台-订单管理-住院押金";
+        String name = "住院押金";
         String fileName = "住院押金";
         String excelSuffixFormat = ConstantDef.EXCEL_SUFFIX_FORMAT;
         String paramUrl = "/deposit/downloadDepositList";

+ 1 - 1
src/main/java/com/ywt/mg/web/controllers/DownloadRecordController.java

@@ -39,7 +39,7 @@ public class DownloadRecordController {
     @RequestMapping(value = {"/downloadRecordList"}, method = RequestMethod.POST)
     @MGRight(menuCode = {"/downloadRecord/queryDownloadRecordList"}, type = MGRightTypeDef.Menu | MGRightTypeDef.Logined)
     BaseResponse queryDownloadRecordList(@Validated @RequestBody QueryDownloadRecordListRequest request) throws Exception {
-        request.setHospitalId(-1);
+        request.setHospitalId(0);
         int adminId = authService.getCurrentAdminId();
         request.setAdminId(adminId);
          return downloadRecordService.queryDownloadRecordList(request);

+ 2 - 2
src/main/java/com/ywt/mg/web/controllers/MealOrderController.java

@@ -55,8 +55,8 @@ public class MealOrderController {
 //            request.setHospitalId(hospital);
 //        }
         int downloadRecordId = idGenerator.genDownloadRecordId();
-        String name = "公司后台-订单管理-订餐订单";
-        String fileName = "订餐订单列表";
+        String name = "订餐订单";
+        String fileName = "订餐订单";
         String excelSuffixFormat = ConstantDef.EXCEL_SUFFIX_FORMAT;
         String paramUrl = "/mealOrder/downloadMealOrderList";
         String paramJson = JsonSerializer.toJson(request);

+ 1 - 1
src/main/java/com/ywt/mg/web/controllers/NatOrderController.java

@@ -51,7 +51,7 @@ public class NatOrderController {
 //            request.setHospitalId(hospital);
 //        }
         int downloadRecordId = idGenerator.genDownloadRecordId();
-        String name = "公司后台-订单管理-核酸检测";
+        String name = "核酸检测";
         String fileName = "核酸检测";
         String excelSuffixFormat = ConstantDef.EXCEL_SUFFIX_FORMAT;
         String paramUrl = "/natOrder/downloadNatOrderList";

+ 1 - 1
src/main/java/com/ywt/mg/web/controllers/OfflineController.java

@@ -313,7 +313,7 @@ public class OfflineController {
         request.setCurrentAdminId(currentAdminId);
         // 插入记录
         int downloadRecordId = idGenerator.genDownloadRecordId();
-        String name = "公司后台-订单管理-线下就诊";
+        String name = "线下就诊";
         String fileName = "线下就诊";
         String excelSuffixFormat = ConstantDef.EXCEL_SUFFIX_FORMAT;
         String paramUrl = "/offline/downloadOfflineList";

+ 1 - 1
src/main/java/com/ywt/mg/web/controllers/OutpatientOrderController.java

@@ -49,7 +49,7 @@ public class OutpatientOrderController {
 //            request.setHospitalId(hospital);
 //        }
         int downloadRecordId = idGenerator.genDownloadRecordId();
-        String name = "公司后台-订单管理-门诊缴费订单";
+        String name = "门诊缴费";
         String fileName = "门诊缴费";
         String excelSuffixFormat = ConstantDef.EXCEL_SUFFIX_FORMAT;
         String paramUrl = "/outpatient/downloadOutPatientOrderList";

+ 98 - 0
src/main/java/com/ywt/mg/web/controllers/PrescriptionController.java

@@ -0,0 +1,98 @@
+package com.ywt.mg.web.controllers;
+
+import com.ywt.mg.core.MGRight;
+import com.ywt.mg.core.utils.Checker;
+import com.ywt.mg.core.utils.serializers.JsonSerializer;
+import com.ywt.mg.domain.models.ConstantDef;
+import com.ywt.mg.params.natOrder.NatOrderListRequest;
+import com.ywt.mg.params.prescription.QueryPrescriptionListRequest;
+import com.ywt.mg.services.*;
+import com.ywt.mg.web.BaseResponse;
+import com.ywt.mg.web.controllers.hospital.HospOfflineController;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController("/prescription")
+@RequestMapping({"/prescription"})
+@MGRight
+public class PrescriptionController {
+
+    private static Logger logger = LoggerFactory.getLogger(PrescriptionController.class);
+
+    @Autowired
+    private AuthService authService;
+
+    @Autowired
+    private PrescriptionServices prescriptionServices;
+
+    @Autowired
+    private IdGenerator idGenerator;
+
+    @Autowired
+    private DownloadRecordService downloadRecordService;
+
+
+    @RequestMapping({"/downloadPrescriptionlist"})
+    public BaseResponse downloadNatOrderList(@RequestBody QueryPrescriptionListRequest request) {
+        int currentAdminId = Checker.getIntegerValue(authService.getCurrentAdminId());
+//        request.setCurrentAdminId(currentAdminId);
+        // 插入记录
+        int  hospital = authService.getCurrentHospitalId();
+//        request.setHospitalId(hospital);
+//        if(request.getHosp() > 0){
+//            hospital = authService.getCurrentHospitalId();
+//            request.setHospitalId(hospital);
+//        }
+        int downloadRecordId = idGenerator.genDownloadRecordId();
+        String name = "处方列表";
+        String fileName = "处方列表";
+        String excelSuffixFormat = ConstantDef.EXCEL_SUFFIX_FORMAT;
+        String paramUrl = "/prescription/downloadPrescriptionlist";
+        String paramJson = JsonSerializer.toJson(request);
+        downloadRecordService.getOrInsertDownloadRecord(downloadRecordId, name, fileName + excelSuffixFormat, paramUrl, paramJson);
+        Thread t = new Thread() {
+            @Override
+            public void run() {
+                prescriptionServices.downloadPrescriptionlist(downloadRecordId, fileName, request);
+//
+            }
+        };
+        t.start();
+        return new BaseResponse().succeed("后台下载中...");
+    }
+
+
+    @RequestMapping({"/downloadPrescriptionDrugList"})
+    public BaseResponse downloadPrescriptionDrugList(@RequestBody QueryPrescriptionListRequest request) {
+        int currentAdminId = Checker.getIntegerValue(authService.getCurrentAdminId());
+//        request.setCurrentAdminId(currentAdminId);
+        // 插入记录
+        int  hospital = authService.getCurrentHospitalId();
+//        request.setHospitalId(hospital);
+//        if(request.getHosp() > 0){
+//            hospital = authService.getCurrentHospitalId();
+//            request.setHospitalId(hospital);
+//        }
+        int downloadRecordId = idGenerator.genDownloadRecordId();
+        String name = "处方列表";
+        String fileName = "处方列表";
+        String excelSuffixFormat = ConstantDef.EXCEL_SUFFIX_FORMAT;
+        String paramUrl = "/prescription/downloadPrescriptionDrugList";
+        String paramJson = JsonSerializer.toJson(request);
+        downloadRecordService.getOrInsertDownloadRecord(downloadRecordId, name, fileName + excelSuffixFormat, paramUrl, paramJson);
+        Thread t = new Thread() {
+            @Override
+            public void run() {
+                prescriptionServices.downloadPrescriptionDrugList(downloadRecordId, fileName, request);
+//
+            }
+        };
+        t.start();
+        return new BaseResponse().succeed("后台下载中...");
+    }
+
+}

+ 1 - 1
src/main/java/com/ywt/mg/web/controllers/RegisteredOrderController.java

@@ -49,7 +49,7 @@ public class RegisteredOrderController {
 //        request.setHospitalId(hospital);
         request.setHosp(0);
         int downloadRecordId = idGenerator.genDownloadRecordId();
-        String name = "公司后台-订单管理-挂号订单";
+        String name = "预约挂号";
         String fileName = "预约挂号";
         String excelSuffixFormat = ConstantDef.EXCEL_SUFFIX_FORMAT;
         String paramUrl = "/registeredOrder/downloadRegisteredOrderList";

+ 2 - 2
src/main/java/com/ywt/mg/web/controllers/hospital/HospCheckUpOrderController.java

@@ -50,12 +50,12 @@ public class HospCheckUpOrderController {
             request.setHospitalId(hosp);
 //        }
         int downloadRecordId = idGenerator.genDownloadRecordId();
-        String name = "医院后台-订单管理-体检缴费";
+        String name = "体检缴费";
         String fileName = "体检缴费";
         String excelSuffixFormat = ConstantDef.EXCEL_SUFFIX_FORMAT;
         String paramUrl = "/hosp/checkUp/downloadCheckUpOrderList";
         String paramJson = JsonSerializer.toJson(request);
-        downloadRecordService.getOrInsertDownloadRecord(downloadRecordId, name, fileName + excelSuffixFormat, paramUrl, paramJson);
+        downloadRecordService.getOrInsertDownloadRecordByHosp(downloadRecordId, name, fileName + excelSuffixFormat, paramUrl, paramJson);
         Thread t = new Thread() {
             @Override
             public void run() {

+ 2 - 2
src/main/java/com/ywt/mg/web/controllers/hospital/HospDepositController.java

@@ -55,12 +55,12 @@ public class HospDepositController {
 //        }
         request.setHosp(1);
         int downloadRecordId = idGenerator.genDownloadRecordId();
-        String name = "医院后台-订单管理-住院押金";
+        String name = "住院押金";
         String fileName = "住院押金";
         String excelSuffixFormat = ConstantDef.EXCEL_SUFFIX_FORMAT;
         String paramUrl = "/hosp/deposit/downloadDepositList";
         String paramJson = JsonSerializer.toJson(request);
-        downloadRecordService.getOrInsertDownloadRecord(downloadRecordId, name, fileName + excelSuffixFormat, paramUrl, paramJson);
+        downloadRecordService.getOrInsertDownloadRecordByHosp(downloadRecordId, name, fileName + excelSuffixFormat, paramUrl, paramJson);
         Thread t = new Thread() {
             @Override
             public void run() {

+ 2 - 2
src/main/java/com/ywt/mg/web/controllers/hospital/HospMealOrderController.java

@@ -56,8 +56,8 @@ public class HospMealOrderController {
 //            request.setHospitalId(hospital);
 //        }
         int downloadRecordId = idGenerator.genDownloadRecordId();
-        String name = "医院后台-订单管理-订餐订单列表";
-        String fileName = "订餐订单列表";
+        String name = "订餐订单";
+        String fileName = "订餐订单";
         String excelSuffixFormat = ConstantDef.EXCEL_SUFFIX_FORMAT;
         String paramUrl = "/hosp/mealOrder/downloadMealOrderList";
         String paramJson = JsonSerializer.toJson(request);

+ 1 - 1
src/main/java/com/ywt/mg/web/controllers/hospital/HospNatOrderController.java

@@ -50,7 +50,7 @@ public class HospNatOrderController {
 //            request.setHospitalId(hospital);
 //        }
         int downloadRecordId = idGenerator.genDownloadRecordId();
-        String name = "医院后台-订单管理-核酸检测";
+        String name = "核酸检测";
         String fileName = "核酸检测记录";
         String excelSuffixFormat = ConstantDef.EXCEL_SUFFIX_FORMAT;
         String paramUrl = "/hosp/natOrder/downloadNatOrderList";

+ 3 - 3
src/main/java/com/ywt/mg/web/controllers/hospital/HospOfflineController.java

@@ -45,12 +45,12 @@ public class HospOfflineController {
         int  hospital = authService.getCurrentHospitalId();
         request.setHospitalId(hospital);
         int downloadRecordId = idGenerator.genDownloadRecordId();
-        String name = "医院后台-订单管理-线下就诊";
-        String fileName = "线下就诊记录";
+        String name = "线下就诊";
+        String fileName = "线下就诊";
         String excelSuffixFormat = ConstantDef.EXCEL_SUFFIX_FORMAT;
         String paramUrl = "/hosp/offline/downloadOfflineList";
         String paramJson = JsonSerializer.toJson(request);
-        downloadRecordService.getOrInsertDownloadRecord(downloadRecordId, name, fileName + excelSuffixFormat, paramUrl, paramJson);
+        downloadRecordService.getOrInsertDownloadRecordByHosp(downloadRecordId, name, fileName + excelSuffixFormat, paramUrl, paramJson);
         Thread t = new Thread() {
             @Override
             public void run() {

+ 2 - 2
src/main/java/com/ywt/mg/web/controllers/hospital/HospOutpatientOrderController.java

@@ -47,12 +47,12 @@ public class HospOutpatientOrderController {
         request.setHospitalId(hospital);
 
         int downloadRecordId = idGenerator.genDownloadRecordId();
-        String name = "医院后台-订单管理-门诊缴费订单";
+        String name = "门诊缴费";
         String fileName = "门诊缴费";
         String excelSuffixFormat = ConstantDef.EXCEL_SUFFIX_FORMAT;
         String paramUrl = "/hosp/outpatient/downloadOutPatientOrderList";
         String paramJson = JsonSerializer.toJson(request);
-        downloadRecordService.getOrInsertDownloadRecord(downloadRecordId, name, fileName + excelSuffixFormat, paramUrl, paramJson);
+        downloadRecordService.getOrInsertDownloadRecordByHosp(downloadRecordId, name, fileName + excelSuffixFormat, paramUrl, paramJson);
         Thread t = new Thread() {
             @Override
             public void run() {

+ 2 - 2
src/main/java/com/ywt/mg/web/controllers/hospital/HospRegisteredOrderController.java

@@ -51,12 +51,12 @@ public class HospRegisteredOrderController {
         request.setHospitalId(hospital);
         request.setHosp(1);
         int downloadRecordId = idGenerator.genDownloadRecordId();
-        String name = "医院后台-订单管理-挂号订单";
+        String name = "预约挂号";
         String fileName = "预约挂号";
         String excelSuffixFormat = ConstantDef.EXCEL_SUFFIX_FORMAT;
         String paramUrl = "/hosp/registeredOrder/downloadRegisteredOrderList";
         String paramJson = JsonSerializer.toJson(request);
-        downloadRecordService.getOrInsertDownloadRecord(downloadRecordId, name, fileName + excelSuffixFormat, paramUrl, paramJson);
+        downloadRecordService.getOrInsertDownloadRecordByHosp(downloadRecordId, name, fileName + excelSuffixFormat, paramUrl, paramJson);
         Thread t = new Thread() {
             @Override
             public void run() {