| src/main/java/com/zy/asrs/controller/CheckOrderController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/entity/CheckOrderDetl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/entity/result/CheckOrderExportDTO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/webapp/static/js/checkOrder/checkOrder.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/webapp/views/checkOrder/checkOrder.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/controller/CheckOrderController.java
@@ -1,5 +1,7 @@ package com.zy.asrs.controller; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; @@ -10,8 +12,10 @@ import com.zy.asrs.entity.*; import com.zy.asrs.entity.param.CheckTaskListParam; import com.zy.asrs.entity.param.OrderDomainParam; import com.zy.asrs.entity.result.CheckOrderExportDTO; import com.zy.asrs.service.*; import com.core.annotations.ManagerAuth; import com.zy.common.entity.NodeExcel; import com.zy.common.model.DetlDto; import com.zy.common.model.LocDto; import com.zy.common.web.BaseController; @@ -19,6 +23,8 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.math.BigDecimal; import java.util.*; @@ -247,15 +253,38 @@ // return R.ok(); // } @RequestMapping(value = "/checkOrder/export/auth") @ManagerAuth public R export(@RequestBody JSONObject param){ EntityWrapper<CheckOrder> wrapper = new EntityWrapper<>(); List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class); Map<String, Object> map = excludeTrash(param.getJSONObject("checkOrder")); convert(map, wrapper); List<CheckOrder> list = checkOrderService.selectList(wrapper); return R.ok(exportSupport(list, fields)); @PostMapping(value = "/checkOrder/export/auth") @ManagerAuth(memo = "盘点单导出") public void export(@RequestParam("orderId") Long orderId, HttpServletResponse response) throws IOException { CheckOrder checkOrder = checkOrderService.selectById(orderId); if (Cools.isEmpty(checkOrder)) { throw new CoolException("数据错误"); } List<CheckOrderDetl> checkOrderDetls = checkOrderDetlService.selectList(new EntityWrapper<CheckOrderDetl>().eq("order_id", orderId)); ArrayList<CheckOrderExportDTO> checkOrderExportDTOS = new ArrayList<>(); for (CheckOrderDetl checkOrderDetl : checkOrderDetls) { CheckOrderExportDTO checkOrderExportDTO = new CheckOrderExportDTO(); checkOrderExportDTO.sync(checkOrderDetl); checkOrderExportDTOS.add(checkOrderExportDTO); } String fileName = "盘点差异单_"+checkOrder.getOrderNo() + ".xlsx"; // 设置响应头,指定文件名 response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); response.setCharacterEncoding("utf-8"); // 防止中文乱码 fileName = java.net.URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20"); response.setHeader("Content-Disposition", "attachment;filename*=" + fileName); EasyExcel.write(response.getOutputStream(), CheckOrderExportDTO.class) .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) .sheet("sheet1") .doWrite(checkOrderExportDTOS); } @RequestMapping(value = "/checkOrderQuery/auth") src/main/java/com/zy/asrs/entity/CheckOrderDetl.java
@@ -489,15 +489,15 @@ // null // [非空] // ); public Double getDiffQty() { public BigDecimal getDiffQty() { if (null == this.status || this.status == 1 || this.status == 0 ) { return 0D; return BigDecimal.ZERO; } if (null != this.anfme && this.workQty != null) { BigDecimal subtract = new BigDecimal(this.workQty.toString()).subtract(new BigDecimal(this.anfme.toString())); return subtract.doubleValue(); return subtract; } // if (null != this.anfme && this.qty != null) { // return this.anfme - this.qty; src/main/java/com/zy/asrs/entity/result/CheckOrderExportDTO.java
New file @@ -0,0 +1,47 @@ package com.zy.asrs.entity.result; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.zy.common.utils.Synchro; import lombok.Data; import lombok.EqualsAndHashCode; import java.math.BigDecimal; @Data @EqualsAndHashCode @HeadRowHeight(20) public class CheckOrderExportDTO { @ExcelProperty({"盘点差异单", "订单号"}) private String orderNo; @ExcelProperty({"盘点差异单", "库位号"}) private String locNo; @ExcelProperty({"盘点差异单", "物料代码"}) private String matnr; @ExcelProperty({"盘点差异单", "物料名称"}) private String maktx; @ExcelProperty({"盘点差异单", "物料规格"}) private String specs; @ExcelProperty({"盘点差异单", "批次"}) private String batch; @ExcelProperty({"盘点差异单", "库存数量"}) private BigDecimal anfme; @ExcelProperty({"盘点差异单", "盘点数量"}) private BigDecimal workQty; @ExcelProperty({"盘点差异单", "差异数量"}) private BigDecimal diffQty; public void sync(Object source) { Synchro.Copy(source, this); } } src/main/webapp/static/js/checkOrder/checkOrder.js
@@ -96,6 +96,8 @@ showEditModel(data); }else if (layEvent === 'createTask') { pakoutPreview(data.id); }else if (layEvent === 'export') { export1(data.id); }else if (layEvent === 'del') { doDel(data.id); } else if (layEvent === 'complete') { @@ -601,6 +603,54 @@ }) } function export1(id) { notice.msg('正在导出文件......', {icon: 4}); $.ajax({ url: baseUrl + "/checkOrder/export/auth", headers: {'token': localStorage.getItem('token')}, data: { orderId: id }, method: 'POST', xhrFields: { responseType: 'blob' }, success: function (data, status, xhr) { notice.destroy(); // 从响应头获取文件名 var disposition = xhr.getResponseHeader('Content-Disposition'); var filename = '盘点差异单.xlsx'; if (disposition && disposition.indexOf('filename') !== -1) { var filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/; var matches = filenameRegex.exec(disposition); if (matches != null && matches[1]) { filename = decodeURIComponent(matches[1].replace(/['"]/g, '')); } } // 创建下载链接 var blob = new Blob([data], {type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'}); var link = document.createElement('a'); link.href = window.URL.createObjectURL(blob); link.download = filename; document.body.appendChild(link); link.click(); document.body.removeChild(link); window.URL.revokeObjectURL(link.href); layer.msg('导出成功', {icon: 1}); }, error: function (xhr, status, error) { notice.destroy(); if (xhr.status === 403) { top.location.href = baseUrl + "/"; } else { layer.msg('导出失败:' + error, {icon: 2}); } } }); } function pakout(tableCache, layerIndex) { // let loadIndex = layer.load(2); notice.msg('正在生成盘点出库任务......', {icon: 4}); src/main/webapp/views/checkOrder/checkOrder.html
@@ -108,6 +108,9 @@ {{# if (d.settle == 2 || d.settle == 11) { }} <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-complete" lay-event="complete">完结</a> {{# } }} {{# if (d.settle == 4) { }} <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-complete" lay-event="export">导出差异单</a> {{# } }} </script> <!-- 表格操作列 --> <script type="text/html" id="tbLook">