Browse Source

导出excel优化。

lighter 4 years ago
parent
commit
a7cd42e26b

+ 9 - 34
src/main/java/thyyxxk/webserver/dao/his/wxapi/WxApiDao.java

@@ -15,50 +15,25 @@ import java.util.List;
 public interface WxApiDao {
 
     @Select("<script>" +
-            "select * from t_wechat_pay_order where create_datetime&gt;=#{start} and " +
+            "select *,refundOpName=(select rtrim(name) from a_employee_mi where code=refund_op_code) " +
+            "from t_wechat_pay_order where create_datetime&gt;=#{start} and " +
             "create_datetime&lt;=#{end} and patient_id like #{patientId} and patient_name " +
             "like #{patientName} and order_type like #{orderType} and pay_status in " +
             "<foreach collection='statuses' item='status' separator=',' open='(' close=')'>" +
             "#{status}" +
             "</foreach>" +
             "</script>")
-    IPage<WxPayOrder> selectOrdersByConditions(
-            IPage<WxPayOrder> iPage,
-            @Param("patientId") String patientId,
-                                   @Param("patientName") String patientName,
-                                   @Param("orderType") String orderType,
-                                   @Param("statuses") String[] statuses,
-                                   @Param("start") String start,
-                                   @Param("end") String end);
+    IPage<WxPayOrder> selectOrdersByConditions(IPage<WxPayOrder> iPage,
+                                               @Param("patientId") String patientId,
+                                               @Param("patientName") String patientName,
+                                               @Param("orderType") String orderType,
+                                               @Param("statuses") String[] statuses,
+                                               @Param("start") String start,
+                                               @Param("end") String end);
 
     @Select("select * from t_wechat_pay_order where trade_no=#{tradeNo}")
     List<WxOrderForExportExcel> selectOrdersByTradeNo(@Param("tradeNo") String tradeNo);
 
-
-    @Select("<script>" +
-            "select id,body,order_type,total_fee,patient_id,patient_name,serial_no,trade_no, " +
-            "create_datetime,pay_datetime,pay_status,refund_reason,refund_op_code=(" +
-            "select rtrim(name) from a_employee_mi where code=refund_op_code),refund_op_datetime, " +
-            "inpatient_no,admiss_times from t_wechat_pay_order where create_datetime&gt;=#{start} and " +
-            "create_datetime&lt;=#{end} and patient_id like #{patientId} and patient_name " +
-            "like #{patientName} and order_type like #{orderType} and pay_status in " +
-            "<foreach collection='statuses' item='status' separator=',' open='(' close=')'>" +
-            "#{status}" +
-            "</foreach>" +
-            "</script>")
-    List<WxOrderForExportExcel> selectOrdersByConditionsForMeSelf(@Param("patientId") String patientId,
-                                                                  @Param("patientName") String patientName,
-                                                                  @Param("orderType") String orderType,
-                                                                  @Param("statuses") String[] statuses,
-                                                                  @Param("start") String start,
-                                                                  @Param("end") String end);
-
-    @Select("select id,body,order_type,total_fee,patient_id,patient_name,serial_no,trade_no, " +
-            "create_datetime,pay_datetime,pay_status,refund_reason,refund_op_code=(" +
-            "select rtrim(name) from a_employee_mi where code=refund_op_code),refund_op_datetime, " +
-            "inpatient_no,admiss_times from t_wechat_pay_order where trade_no=#{tradeNo}")
-    List<WxOrderForExportExcel> selectOrdersByTradeNoForMeSelf(@Param("tradeNo") String tradeNo);
-
     @Update("update t_wechat_pay_order set refund_id=#{refundId}, refund_op_code=#{refundOpCode}, " +
             "refund_op_datetime=#{refundOpDatetime}, refund_reason=#{refundReason}, pay_status=4 where id=#{id}")
     void updateRefundId(RefundParam param);

+ 3 - 0
src/main/java/thyyxxk/webserver/pojo/wxapi/WxPayOrder.java

@@ -70,4 +70,7 @@ public class WxPayOrder {
     private String inpatientNo;
     // 住院次数
     private Integer admissTimes;
+
+    // 退款操作员姓名
+    private String refundOpName;
 }

+ 22 - 17
src/main/java/thyyxxk/webserver/service/wxapi/WxApiService.java

@@ -156,29 +156,34 @@ public class WxApiService {
         log.info("导出excel: {}", JSON.toJSONString(param));
         IPage<WxPayOrder> iPage = getWxPayOrderIPage(param);
         List<WxPayOrder> list = iPage.getRecords();
-        String[] title = {"序号","商品描述","订单类型","订单金额","姓名","门诊号","住院号","住院次数","订单号","流水号"
+        String[] title = {"商品描述","订单类型","订单金额","姓名","门诊号","住院号","住院次数","订单号","流水号"
                 ,"订单创建时间","订单支付时间","订单支付状态","退款原因","退款操作员","退款时间"};
         String sheetName = "sheet1";
         String[][] content = new String[list.size()][];
+        String payStatusName = null;
+        boolean multiple = true;
+        if (!param.getPayStatus().contains(",")) {
+            multiple = false;
+            payStatusName = FilterUtil.filterPayStatus(Integer.parseInt(param.getPayStatus()));
+        }
         for (int i = 0; i < list.size(); i++) {
             content[i] = new String[title.length];
-            content[i][0] = String.valueOf(i + 1);
             WxPayOrder order = list.get(i);
-            content[i][1] = order.getBody();
-            content[i][2] = String.valueOf(order.getOrderType());
-            content[i][3] = String.valueOf(order.getTotalFee());
-            content[i][4] = order.getPatientName();
-            content[i][5] = order.getPatientId();
-            content[i][6] = order.getInpatientNo();
-            content[i][7] = String.valueOf(order.getAdmissTimes());
-            content[i][8] = order.getTradeNo();
-            content[i][9] = order.getSerialNo();
-            content[i][10] = DateUtil.formatDatetime(order.getCreateDatetime());
-            content[i][11] = DateUtil.formatDatetime(order.getPayDatetime());
-            content[i][12] = String.valueOf(order.getPayStatus());
-            content[i][13] = order.getRefundReason();
-            content[i][14] = order.getRefundOpCode();
-            content[i][15] = DateUtil.formatDatetime(order.getRefundOpDatetime());
+            content[i][0] = order.getBody();
+            content[i][1] = FilterUtil.filterOrderType(order.getOrderType());
+            content[i][2] = String.valueOf(order.getTotalFee());
+            content[i][3] = order.getPatientName();
+            content[i][4] = order.getPatientId();
+            content[i][5] = order.getInpatientNo();
+            content[i][6] = null == order.getAdmissTimes() ? "" : String.valueOf(order.getAdmissTimes());
+            content[i][7] = order.getTradeNo();
+            content[i][8] = order.getSerialNo();
+            content[i][9] = DateUtil.formatDatetime(order.getCreateDatetime());
+            content[i][10] = DateUtil.formatDatetime(order.getPayDatetime());
+            content[i][11] = multiple ? FilterUtil.filterPayStatus(order.getPayStatus()) : payStatusName;
+            content[i][12] = order.getRefundReason();
+            content[i][13] = order.getRefundOpName();
+            content[i][14] = DateUtil.formatDatetime(order.getRefundOpDatetime());
         }
         ExcelUtil.exportExcel(response, sheetName, title, content);
     }

+ 42 - 0
src/main/java/thyyxxk/webserver/utils/FilterUtil.java

@@ -177,4 +177,46 @@ public class FilterUtil {
                 return "未知";
         }
     }
+
+    public static String filterOrderType(Integer orderType) {
+        // 订单类型,1:挂号费 2:门诊缴费 3:住院预交金
+        if (null == orderType) {
+            return "";
+        }
+        switch (orderType) {
+            case 1:
+                return "挂号费";
+            case 2:
+                return "门诊缴费";
+            case 3:
+                return "住院预交金";
+            default:
+                return "未知类型";
+        }
+    }
+
+    public static String filterPayStatus(Integer status) {
+        // 订单支付状态,99:初值,0:未支付,1:支付成功,2:已关闭,3:支付失败,4:已退款,5:已接收,等待扣款,6:用户支付中,7:退款失败
+        if (null == status) {
+            return "";
+        }
+        switch (status) {
+            case 99:
+                return "初值";
+            case 0:
+                return "未支付";
+            case 1:
+                return "支付成功";
+            case 2:
+                return "已关闭";
+            case 3:
+                return "支付失败";
+            case 4:
+                return "已退款";
+            case 7:
+                return "退款失败";
+            default:
+                return "未知状态";
+        }
+    }
 }