自动化立体仓库 - WMS系统
zhou zhou
8 小时以前 64d6948806c3dd7d657c359354212fa3eadfaa8e
#盘点
4个文件已修改
1个文件已添加
153 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/CheckOrderController.java 47 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/CheckOrderDetl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/result/CheckOrderExportDTO.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/checkOrder/checkOrder.js 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/checkOrder/checkOrder.html 3 ●●●●● 补丁 | 查看 | 原始文档 | 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">