|
@@ -1,6 +1,8 @@
|
|
|
package thyyxxk.webserver.service.wxapi;
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.http.HttpEntity;
|
|
|
import org.apache.http.HttpResponse;
|
|
@@ -28,12 +30,12 @@ import thyyxxk.webserver.dao.his.wxapi.WxApiDao;
|
|
|
import thyyxxk.webserver.pojo.ResultVo;
|
|
|
import thyyxxk.webserver.pojo.wxapi.QueryWxOrderParam;
|
|
|
import thyyxxk.webserver.pojo.wxapi.RefundParam;
|
|
|
-import thyyxxk.webserver.pojo.wxapi.WxOrderForExportExcel;
|
|
|
import thyyxxk.webserver.pojo.wxapi.WxPayOrder;
|
|
|
import thyyxxk.webserver.utils.*;
|
|
|
|
|
|
import javax.net.ssl.KeyManagerFactory;
|
|
|
import javax.net.ssl.SSLContext;
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
import java.io.InputStream;
|
|
|
import java.security.KeyStore;
|
|
|
import java.security.SecureRandom;
|
|
@@ -51,48 +53,22 @@ public class WxApiService {
|
|
|
}
|
|
|
|
|
|
public ResultVo<Map<String, Object>> selectOrdersByConditions(QueryWxOrderParam param) {
|
|
|
- log.info("查询微信订单数据:{}", param);
|
|
|
+ log.info("查询微信订单数据:{}", JSON.toJSONString(param));
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
if (!param.getTradeNo().equals("")) {
|
|
|
- if (null != param.getFrom() && param.getFrom() == 1) {
|
|
|
- map.put("list", dao.selectOrdersByTradeNoForMeSelf(param.getTradeNo()));
|
|
|
- } else {
|
|
|
- map.put("list", dao.selectOrdersByTradeNo(param.getTradeNo()));
|
|
|
- }
|
|
|
+ map.put("list", dao.selectOrdersByTradeNo(param.getTradeNo()));
|
|
|
map.put("totalSize", 1);
|
|
|
return ResultVoUtil.success(map);
|
|
|
}
|
|
|
- String patientId = "%" + param.getPatientId() + "%";
|
|
|
- String patientName = "%" + param.getPatientName() + "%";
|
|
|
- String orderType = param.getOrderType() == -1 ? "%%" : "%" + param.getOrderType() + "%";
|
|
|
- if (param.getPayStatus().equals("-1")) {
|
|
|
- param.setPayStatus("99,0,1,2,3,4,5,6,7");
|
|
|
- }
|
|
|
- String[] statuses = param.getPayStatus().split(",");
|
|
|
- String start = param.getStart() + " 00:00:00";
|
|
|
- String end = param.getEnd() + " 23:59:59";
|
|
|
- if (null != param.getFrom() && param.getFrom() == 1) {
|
|
|
- List<WxOrderForExportExcel> list = dao.selectOrdersByConditionsForMeSelf(patientId, patientName, orderType, statuses, start, end);
|
|
|
- map.put("list", list);
|
|
|
- map.put("totalSize", list.size());
|
|
|
- return ResultVoUtil.success(map);
|
|
|
- }
|
|
|
- List<WxPayOrder> list = dao.selectOrdersByConditions(patientId, patientName, orderType, statuses, start, end);
|
|
|
- if (null == list || list.isEmpty()) {
|
|
|
+ IPage<WxPayOrder> iPage = getWxPayOrderIPage(param);
|
|
|
+
|
|
|
+ if (iPage.getTotal() == 0) {
|
|
|
return ResultVoUtil.fail(ExceptionEnum.NO_DATA_EXIST);
|
|
|
}
|
|
|
- int startSize = (param.getCurrentPage() - 1) * param.getPageSize();
|
|
|
- if (startSize > list.size()) {
|
|
|
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "数据起始位大于数据总数量");
|
|
|
- }
|
|
|
- int endSize = param.getCurrentPage() * param.getPageSize();
|
|
|
- if (endSize > list.size()) {
|
|
|
- endSize = list.size();
|
|
|
- }
|
|
|
- map.put("totalSize", list.size());
|
|
|
+ map.put("totalSize", iPage.getTotal());
|
|
|
map.put("currentPage", param.getCurrentPage());
|
|
|
map.put("pageSize", param.getPageSize());
|
|
|
- map.put("list", list.subList(startSize, endSize));
|
|
|
+ map.put("list", iPage.getRecords());
|
|
|
return ResultVoUtil.success(map);
|
|
|
}
|
|
|
|
|
@@ -175,4 +151,50 @@ public class WxApiService {
|
|
|
HttpEntity httpEntity = httpResponse.getEntity();
|
|
|
return EntityUtils.toString(httpEntity, "UTF-8");
|
|
|
}
|
|
|
+
|
|
|
+ public void exportExcel(HttpServletResponse response, QueryWxOrderParam param) {
|
|
|
+ log.info("导出excel: {}", JSON.toJSONString(param));
|
|
|
+ IPage<WxPayOrder> iPage = getWxPayOrderIPage(param);
|
|
|
+ List<WxPayOrder> list = iPage.getRecords();
|
|
|
+ String[] title = {"序号","商品描述","订单类型","订单金额","姓名","门诊号","住院号","住院次数","订单号","流水号"
|
|
|
+ ,"订单创建时间","订单支付时间","订单支付状态","退款原因","退款操作员","退款时间"};
|
|
|
+ String sheetName = "sheet1";
|
|
|
+ String[][] content = new String[list.size()][];
|
|
|
+ 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());
|
|
|
+ }
|
|
|
+ ExcelUtil.exportExcel(response, sheetName, title, content);
|
|
|
+ }
|
|
|
+
|
|
|
+ private IPage<WxPayOrder> getWxPayOrderIPage(QueryWxOrderParam param) {
|
|
|
+ IPage<WxPayOrder> iPage = new Page<>(param.getCurrentPage(), param.getPageSize());
|
|
|
+ String patientId = "%" + param.getPatientId() + "%";
|
|
|
+ String patientName = "%" + param.getPatientName() + "%";
|
|
|
+ String orderType = param.getOrderType() == -1 ? "%%" : "%" + param.getOrderType() + "%";
|
|
|
+ if (param.getPayStatus().equals("-1")) {
|
|
|
+ param.setPayStatus("99,0,1,2,3,4,5,6,7");
|
|
|
+ }
|
|
|
+ String[] statuses = param.getPayStatus().split(",");
|
|
|
+ String start = param.getStart() + " 00:00:00";
|
|
|
+ String end = param.getEnd() + " 23:59:59";
|
|
|
+ return dao.selectOrdersByConditions(iPage, patientId, patientName, orderType, statuses, start, end);
|
|
|
+ }
|
|
|
+
|
|
|
}
|