diff --git a/src/main/java/cn/chjyj/szwh/controller/admin/AdminOrderController.java b/src/main/java/cn/chjyj/szwh/controller/admin/AdminOrderController.java index cf00b25..13da34b 100644 --- a/src/main/java/cn/chjyj/szwh/controller/admin/AdminOrderController.java +++ b/src/main/java/cn/chjyj/szwh/controller/admin/AdminOrderController.java @@ -1,21 +1,29 @@ package cn.chjyj.szwh.controller.admin; +import cn.chjyj.szwh.bean.Order; import cn.chjyj.szwh.bean.OrderGoodsDetail; import cn.chjyj.szwh.controller.BaseController; import cn.chjyj.szwh.service.OrderGoodsDetailService; import cn.chjyj.szwh.service.OrderService; +import cn.chjyj.szwh.utils.AjaxResult; +import cn.chjyj.szwh.utils.SzReqUtils; +import cn.chjyj.szwh.vo.AdOrderVO; +import com.alibaba.excel.EasyExcel; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.math.BigDecimal; +import java.net.URLEncoder; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.*; /** * 订单管理 @@ -37,70 +45,23 @@ public class AdminOrderController extends BaseController { public JSONObject odlist(@RequestBody(required = false) String jsonStr){ JSONObject request = JSON.parseObject(jsonStr); Map rqmap = new HashMap(); - if(StringUtils.isBlank(jsonStr)){ - rqmap=null; - } - // 订单编号 - String batchcode= request.getString("batchcode"); - if(StringUtils.isNotBlank(batchcode)){ - rqmap.put("o.batchcode",batchcode); - } - //委托方 - String entrustName=request.getString("entrust_name").trim(); - //购买方 - String buyName=request.getString("buy_name"); - - //商品名称 - String goodsName=request.getString("goods_name"); - if(StringUtils.isNotBlank(goodsName)){ - rqmap.put("og.goods_name",goodsName); - } - // 订单类型 - String orderType= request.getString("order_type"); - if(StringUtils.isNotBlank(orderType)){ - rqmap.put("order_type",orderType); - } - //充值类型 - String chargesType= request.getString("charges_type"); - if(StringUtils.isNotBlank(chargesType)){ - rqmap.put("og.charges_type",chargesType); - } - //订单状态 - String transaction_status=request.getString("transaction_status"); - if(StringUtils.isNotBlank(transaction_status)){ - rqmap.put("o.status",transaction_status); + if(StringUtils.isNotBlank(jsonStr)){ + rqmap = queryMap(request); } - // 交易类型 - String entrustType=request.getString("entrust_type"); - if(StringUtils.isNotBlank(entrustType)){ - rqmap.put("og.goods_entrust",entrustType); - } - - // 创建时间 - String createtime=request.getString("createtime"); - if(StringUtils.isNotBlank(createtime)){ - JSONArray jarr = JSONArray.parseArray(createtime); - if(jarr.size()>0){ - // 拆分 - rqmap.put("o.createtime"," og.createtime between '"+jarr.get(0)+" 00:00:00' and '"+jarr.get(1)+" 23:59:59'"); - } - } - - //商品编号 - String gdsid = request.getString("goods_isli"); - if(StringUtils.isNotEmpty(gdsid)){ - rqmap.put("og.goods_islicode",gdsid); - } - // String spage=request.getString("page"); int page= StringUtils.isNotBlank(spage)?Integer.valueOf(spage):1; // String slimit=request.getString("limit"); int limit = StringUtils.isNotBlank(slimit)?Integer.valueOf(slimit):10; - + //委托方 + String entrustName=request.getString("entrust_name").trim(); + //购买方 + String buyName=request.getString("buy_name"); + // 查询条件 Map map = orderService.getOrderList(rqmap,buyName,entrustName,page,limit); + jsonObject.put("code",200); jsonObject.put("msg","操作成功"); jsonObject.put("data",map); @@ -169,4 +130,117 @@ public class AdminOrderController extends BaseController { return jsonObject; } + /** + * 从json 字符串中抽取得到相应的map进行查询 + * @param request + * @return + */ + private Map queryMap(JSONObject request){ + Map rqmap = new HashMap(); + + // 订单编号 + String batchcode= request.getString("batchcode"); + if(StringUtils.isNotBlank(batchcode)){ + rqmap.put("o.batchcode",batchcode); + } + + //商品名称 + String goodsName=request.getString("goods_name"); + if(StringUtils.isNotBlank(goodsName)){ + rqmap.put("og.goods_name",goodsName); + } + // 订单类型 + String orderType= request.getString("order_type"); + if(StringUtils.isNotBlank(orderType)){ + rqmap.put("order_type",orderType); + } + //充值类型 + String chargesType= request.getString("charges_type"); + if(StringUtils.isNotBlank(chargesType)){ + rqmap.put("og.charges_type",chargesType); + } + //订单状态 + String transaction_status=request.getString("transaction_status"); + if(StringUtils.isNotBlank(transaction_status)){ + rqmap.put("o.status",transaction_status); + } + // 交易类型 + String entrustType=request.getString("entrust_type"); + if(StringUtils.isNotBlank(entrustType)){ + rqmap.put("og.goods_entrust",entrustType); + } + + // 创建时间 + String createtime=request.getString("createtime"); + if(StringUtils.isNotBlank(createtime)){ + JSONArray jarr = JSONArray.parseArray(createtime); + if(jarr.size()>0){ + // 拆分 + rqmap.put("o.createtime"," og.createtime between '"+jarr.get(0)+" 00:00:00' and '"+jarr.get(1)+" 23:59:59'"); + } + } + + //商品编号 + String gdsid = request.getString("goods_isli"); + if(StringUtils.isNotEmpty(gdsid)){ + rqmap.put("og.goods_islicode",gdsid); + } + return rqmap; + } + + /** + * 导出excel,出现错误时候反馈给json + * @param response + * @param request + * @throws IOException + */ + @PostMapping(value = "/export",produces = "application/octet-stream") + public void export(HttpServletResponse response, HttpServletRequest request) throws IOException { + // 获取查询条件,得到对应的数据 + JSONObject rejson = SzReqUtils.getJson(request); + String spage=rejson.getString("page"); + int page= StringUtils.isNotBlank(spage)?Integer.valueOf(spage):1; + // + String slimit=rejson.getString("limit"); + int limit = StringUtils.isNotBlank(slimit)?Integer.valueOf(slimit):10; + // 从json 抽取出相应的查询条件 + Map rmap = queryMap(rejson); + List adordlist = orderService.getAdOrdlist(rmap,page,limit); + + try { + String dateStr = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")); + String name = "WHYOTS"+dateStr; + //防止下载时中文乱码 + name = new String(name.getBytes("UTF-8"), "ISO-8859-1"); + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + //添加这个是防止前端拿不到Content-disposition + response.setHeader("Content-Disposition", "attachment;filename=" + name+".xlsx"); + response.setHeader("Access-Control-Expose-Headers","Content-disposition"); + +// response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); +// response.setCharacterEncoding("utf-8"); +// // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系 +// //String fileName = URLEncoder.encode("测试", "UTF-8").replaceAll("\\+", "%20"); +// String fileName =UUID.randomUUID().toString(); +// response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"); + // 这里需要设置不关闭流 + EasyExcel.write(response.getOutputStream(), AdOrderVO.class) + .autoCloseStream(Boolean.FALSE) + .sheet("数据1") + .doWrite(adordlist); + } catch (Exception e) { + // 重置response + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + JSONObject otjson = AjaxResult.error("下载文件失败" + e.getMessage()); + response.getWriter().println(otjson); +// Map otmap = new HashMap<>(); +// otmap.put("status", "failure"); +// otmap.put("message", "下载文件失败" + e.getMessage()); + //response.getWriter().println(JSON.toJSONString(otmap)); + } + } + } diff --git a/src/main/java/cn/chjyj/szwh/service/OrderService.java b/src/main/java/cn/chjyj/szwh/service/OrderService.java index ee19946..fef6fc3 100644 --- a/src/main/java/cn/chjyj/szwh/service/OrderService.java +++ b/src/main/java/cn/chjyj/szwh/service/OrderService.java @@ -2,6 +2,7 @@ package cn.chjyj.szwh.service; import cn.chjyj.szwh.bean.Goods; import cn.chjyj.szwh.bean.Order; +import cn.chjyj.szwh.vo.AdOrderVO; import com.alibaba.fastjson2.JSONArray; import org.apache.ibatis.annotations.Param; @@ -19,6 +20,15 @@ public interface OrderService { */ List getAllOrderList(int page); + /** + * 管理端订单查询 + * @param qmap + * @param page + * @param limit + * @return + */ + List getAdOrdlist(Map qmap,int page,int limit); + /** * 根据条件查询 * @param qumap diff --git a/src/main/java/cn/chjyj/szwh/service/impl/OrderServiceImpl.java b/src/main/java/cn/chjyj/szwh/service/impl/OrderServiceImpl.java index ea21059..a992342 100644 --- a/src/main/java/cn/chjyj/szwh/service/impl/OrderServiceImpl.java +++ b/src/main/java/cn/chjyj/szwh/service/impl/OrderServiceImpl.java @@ -82,6 +82,20 @@ public class OrderServiceImpl implements OrderService { return orderMapper.getAllOrderList(startrs, pageSize); } + /** + * 管理端订单查询 + * @param qmap + * @param page + * @param limit + * @return + */ + public List getAdOrdlist(Map qmap,int page,int limit){ + int starrs = page > 1 ? (page - 1) * limit : 0; + // 管理系统订单 + List adordlist = orderMapper.queryOrderList(qmap,starrs,limit); + return adordlist; + } + /** * 组合查询订单信息 * diff --git a/src/main/java/cn/chjyj/szwh/vo/AdOrderVO.java b/src/main/java/cn/chjyj/szwh/vo/AdOrderVO.java index 38ed518..e8fe848 100644 --- a/src/main/java/cn/chjyj/szwh/vo/AdOrderVO.java +++ b/src/main/java/cn/chjyj/szwh/vo/AdOrderVO.java @@ -1,19 +1,32 @@ package cn.chjyj.szwh.vo; +import com.alibaba.excel.annotation.ExcelProperty; + /** * 管理端的订单集合 */ public class AdOrderVO { + @ExcelProperty("编号") private Integer id; + @ExcelProperty("订单编号") private String batchcode; + @ExcelProperty("订单状态") private Integer status; + @ExcelProperty("订单金额") private String total_money; + @ExcelProperty("标的名称") private String goods_name; + @ExcelProperty("下单时间") private String createtime; + @ExcelProperty("委托方编号") private String entrust_islicode; + @ExcelProperty("交易方式") private Integer goods_entrust; + @ExcelProperty("收费类型") private Integer charges_type; + @ExcelProperty("购买方/被授权方") private String buy_username;//订单用户name 别名 + @ExcelProperty("买放ISLICODE") private String buy_islicode;// 购物者 public Integer getId() { diff --git a/urls.md b/urls.md index 17bc3cd..a3e14c1 100644 --- a/urls.md +++ b/urls.md @@ -44,4 +44,12 @@ 21. [JAVA获取N个工作日后的时间的工具类、考虑上班时间、时区](https://blog.csdn.net/qq_37136334/article/details/121381277) -22.[Java获取n天后的工作日时间](https://www.minedeed.com/Java/13.html) \ No newline at end of file +22.[Java获取n天后的工作日时间](https://www.minedeed.com/Java/13.html) + +23. [Excel导出(浏览器下载器下载导出Excel)](https://blog.csdn.net/m0_61238952/article/details/128100412) + +[](http://vue.cnsbq.com/error/211.html) + +https://www.cnblogs.com/thinkguo/archive/2019/08/01/11281919.html + +https://blog.csdn.net/qq_42739776/article/details/123791866 \ No newline at end of file