自动化立体仓库 - WMS系统
zhangchao
2024-11-08 940cab832331ab054d2a4c74f13aacc6847dd79d
Merge branch 'phyzwms2' into phyzasrs-erp

# Conflicts:
# src/main/resources/application.yml
28个文件已修改
1个文件已添加
1185 ■■■■■ 已修改文件
pom.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/AgvMobileController.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/OrderController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/OrderDetlController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/ReportDownloadController.java 235 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/AdjDetl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/ViewWorkCountInView.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/ViewWorkInBean.java 411 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/ReportQueryMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/AgvWrkMastScheduler.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/OrderMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/ViewStockUseMapper.xml 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/ViewWorkInMapper.xml 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/agvHandWrkMast/agvHandWrkMast.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/handWrkMast/handWrkMast.js 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/report/workCountIn.js 113 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/report/workCountOut.js 50 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/report/workIn.js 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/report/workOut.js 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/handWrkMast/handWrkMast.html 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/report/viewWorkCountIn.html 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/report/viewWorkCountOut.html 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/report/viewWorkIn.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/report/viewWorkOut.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml
@@ -93,7 +93,7 @@
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>2.2.6</version>
            <version>3.1.0</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
src/main/java/com/zy/asrs/controller/AgvMobileController.java
@@ -409,6 +409,9 @@
                agvLocMastByContainerCode.setBarcode(barcode1);
                agvLocMastService.updateById(agvLocMastByContainerCode);
            }
            // 保存调整记录
            AdjDetl adjDetl = new AdjDetl();
            return R.ok("维护成功");
        }
@@ -634,6 +637,7 @@
        Date now = new Date();
        List<HashMap<String,String>> dbList = (List<HashMap<String, String>>) params.get("dbList");
        params.get("dbList");
        String orderNo = params.get("orderNo").toString();
        for (HashMap<String, String> map : dbList) {
            String locNo = map.get("locNo");
            String barcode = map.get("suppCode");
@@ -664,11 +668,19 @@
                // 更新订单
                // 先查询库订单明细 所属的订单
                OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("source",36).eq("matnr", agvLocDetl.getMatnr()).eq("three_code",agvLocDetl.getThreeCode()));
                OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("order_no",orderNo).eq("source",17).eq("matnr", agvLocDetl.getMatnr()).eq("three_code",agvLocDetl.getThreeCode()));
                orderDetl.setQty(orderDetl.getQty() + agvLocDetl.getAnfme());
                if (!orderDetlService.update(orderDetl,new EntityWrapper<OrderDetl>().eq("source",36).eq("matnr", agvLocDetl.getMatnr()).eq("three_code",agvLocDetl.getThreeCode()))){
                if (!orderDetlService.update(orderDetl,new EntityWrapper<OrderDetl>().eq("order_no",orderNo).eq("source",17).eq("matnr", agvLocDetl.getMatnr()).eq("three_code",agvLocDetl.getThreeCode()))){
                    throw new CoolException("修改订单明细失败,请联系管理员"+agvLocDetl.getOrderNo()+agvLocDetl.getMatnr());
                }
                // 更新订单状态
                Order order = orderService.selectByNo(orderNo);
                Long settle = order.getSettle();
                if (settle == 1L) {
                    if (!orderService.updateSettle(order.getId(),2L,getUserId())) {
                        throw new CoolException("订单号:{"+order.getOrderNo()+"}更新订单状态:1-->2 失败!(半成品调拨单任务)" );
                    }
                }
            }
            // 更新源库位
            AgvLocMast locMast = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", locNo));
src/main/java/com/zy/asrs/controller/OrderController.java
@@ -337,7 +337,7 @@
        List<DocType> pakins = docTypeService.selectList(new EntityWrapper<DocType>().eq("pakout", 1));
        List<Long> docIds = new ArrayList<>();
        for (DocType pakin : pakins) {
            if (pakin.getDocId() == 36) {
            if (pakin.getDocId() == 17) {
                docIds.add(pakin.getDocId());
            }
        }
@@ -1133,7 +1133,7 @@
                        throw new CoolException("生成单据主档失败,请重新导入!");
                    }
                }else {
                    order2.setSettle(order.getSettle() == 1L ? 1L : 2L );
                    order2.setSettle(order2.getSettle() == 1L ? 1L : 2L );
                    orderService.updateById(order2);
                }
@@ -1211,7 +1211,7 @@
                            throw new CoolException("生成单据主档失败,请重新导入!");
                        }
                    }else {
                        order3.setSettle(order.getSettle() == 1L ? 1L : 2L );
                        order3.setSettle(order3.getSettle() == 1L ? 1L : 2L );
                        orderService.updateById(order3);
                    }
src/main/java/com/zy/asrs/controller/OrderDetlController.java
@@ -169,11 +169,11 @@
        List<DocType> pakins = docTypeService.selectList(new EntityWrapper<DocType>().eq("pakout", 1));
        List<Long> docIds = new ArrayList<>();
        for (DocType pakin : pakins) {
            if (pakin.getDocId() != 33 && pakin.getDocId() != 34 && pakin.getDocId() != 35) {
            if (pakin.getDocId() != 17 && pakin.getDocId() != 33 && pakin.getDocId() != 34 && pakin.getDocId() != 35) {
                docIds.add(pakin.getDocId());
            }
        }
        wrapper.ne("source",19);
        wrapper.in("source",docIds);
        Page<OrderDetl> page = orderDetlService.selectPage(new Page<>(curr, limit), wrapper);
        for (OrderDetl record : page.getRecords()) {
            Double sumAnfme = agvLocDetlService.getSumAnfme(record.getMatnr(), record.getThreeCode());
src/main/java/com/zy/asrs/controller/ReportDownloadController.java
New file
@@ -0,0 +1,235 @@
package com.zy.asrs.controller;
import com.alibaba.excel.EasyExcel;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.core.common.Cools;
import com.core.common.DateUtils;
import com.core.common.R;
import com.zy.asrs.entity.*;
import com.zy.asrs.mapper.ReportQueryMapper;
import com.zy.asrs.service.AgvWrkMastLogService;
import com.zy.common.web.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import javax.xml.soap.SAAJResult;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/report/download")
public class ReportDownloadController extends BaseController {
    @Autowired
    private ReportQueryMapper reportQueryMapper;
    @Autowired
    private AgvWrkMastLogService wrkMastLogService;
    /**
     * 文件下载并且失败的时候返回json(默认失败了会返回一个有部分数据的Excel)
     * 日入库汇总查询
     *
     * @since 2.1.1
     */
    @GetMapping("/countIn")
    public void download1(HttpServletResponse response, @RequestParam Map<String, Object> param) throws IOException {
        try {
            response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
            response.setCharacterEncoding("utf-8");
            // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
            String fileName = URLEncoder.encode("日入库汇总", "UTF-8").replaceAll("\\+", "%20");
            response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
            // 这里需要设置不关闭流
            EasyExcel.write(response.getOutputStream(), ViewWorkCountInView.class).autoCloseStream(Boolean.FALSE).sheet("sheet1").doWrite(getInData(param));
        } catch (Exception e) {
            // 重置response
            response.reset();
            response.setContentType("application/json");
            response.setCharacterEncoding("utf-8");
            Map<String, String> map = new HashMap<>();
            map.put("status", "failure");
            map.put("message", "下载文件失败" + e.getMessage());
            response.getWriter().println(JSON.toJSONString(map));
        }
    }
    private List<ViewWorkCountInView> getInData(Map<String, Object> param) {
        String startTime = "1970.1.2";
        String endTime = "2099.1.2";
        if (!Cools.isEmpty(param.get("query_date"))) {
            String queryDate = (String) param.get("query_date");
            String[] split = queryDate.split(" - ");
            startTime = split[0].split(" ")[0].replace("-", ".");
            endTime = split[1].split(" ")[0].replace("-", ".");
        }
        List<ViewWorkCountInView> allCountIn = reportQueryMapper.selectWorkCountIn(null, null, (String) param.get("matnr"), startTime, endTime);
        return allCountIn;
    }
    /**
     * 文件下载并且失败的时候返回json(默认失败了会返回一个有部分数据的Excel)
     * 日入库汇总查询
     *
     * @since 2.1.1
     */
    @RequestMapping("/countOut")
    public void download2(HttpServletResponse response, @RequestParam Map<String, Object> param) throws IOException {
        try {
            response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
            response.setCharacterEncoding("utf-8");
            // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
            String fileName = URLEncoder.encode("日出库汇总", "UTF-8").replaceAll("\\+", "%20");
            response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
            List<ViewWorkCountInView> outData = getOutData(param);
            // 这里需要设置不关闭流
            EasyExcel.write(response.getOutputStream(), ViewWorkCountInView.class).autoCloseStream(Boolean.FALSE).sheet("sheet1").doWrite(outData);
        } catch (Exception e) {
            // 重置response
            response.reset();
            response.setContentType("application/json");
            response.setCharacterEncoding("utf-8");
            Map<String, String> map = new HashMap<>();
            map.put("status", "failure");
            map.put("message", "下载文件失败" + e.getMessage());
            response.getWriter().println(JSON.toJSONString(map));
        }
    }
    private List<ViewWorkCountInView> getOutData(Map<String, Object> param) {
        String startTime = "1970.1.2";
        String endTime = "2099.1.2";
        if (!Cools.isEmpty(param.get("query_date"))) {
            String queryDate = (String) param.get("query_date");
            String[] split = queryDate.split(" - ");
            startTime = split[0].split(" ")[0].replace("-", ".");
            endTime = split[1].split(" ")[0].replace("-", ".");
        }
        List<ViewWorkCountInView> allCountIn = reportQueryMapper.selectWorkCountOut(null,null, (String) param.get("matnr"), startTime, endTime);
        return allCountIn;
    }
    /**
     * 文件下载并且失败的时候返回json(默认失败了会返回一个有部分数据的Excel)
     * 日入库汇总查询
     *
     * @since 2.1.1
     */
    @RequestMapping("/wrkMastLog")
    public void wrkMastLog(HttpServletResponse response, @RequestParam Map<String, Object> param) throws IOException {
        try {
            response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
            response.setCharacterEncoding("utf-8");
            // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
            String fileName = URLEncoder.encode("工作档维护日志", "UTF-8").replaceAll("\\+", "%20");
            response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
            // 这里需要设置不关闭流
            EasyExcel.write(response.getOutputStream(), ViewWorkCountInView.class).autoCloseStream(Boolean.FALSE).sheet("sheet1").doWrite(getWrkMastLogData(param));
        } catch (Exception e) {
            // 重置response
            response.reset();
            response.setContentType("application/json");
            response.setCharacterEncoding("utf-8");
            Map<String, String> map = new HashMap<>();
            map.put("status", "failure");
            map.put("message", "下载文件失败" + e.getMessage());
            response.getWriter().println(JSON.toJSONString(map));
        }
    }
    private List<AgvWrkMastLog> getWrkMastLogData(Map<String, Object> param) {
        excludeTrash(param);
        EntityWrapper<AgvWrkMastLog> wrapper = new EntityWrapper<>();
        convert(param, wrapper);
        return wrkMastLogService.selectList(wrapper);
    }
    private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper) {
        for (Map.Entry<String, Object> entry : map.entrySet()) {
            String val = String.valueOf(entry.getValue());
            if (val.contains(RANGE_TIME_LINK)) {
                String[] dates = val.split(RANGE_TIME_LINK);
                wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
                wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
            } else {
                if (entry.getKey().equals("manu_type")) {
                    wrapper.like(entry.getKey(), val);
                } else {
                    wrapper.eq(entry.getKey(), val);
                }
            }
        }
    }
    /**
     * 文件下载并且失败的时候返回json(默认失败了会返回一个有部分数据的Excel)
     * 日出库明细统计
     *
     * @since 2.1.1
     */
    @RequestMapping("/out")
    public void out(HttpServletResponse response, @RequestParam(required = false) ViewWorkInBean bean) throws IOException {
        try {
            response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
            response.setCharacterEncoding("utf-8");
            // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
            String fileName = URLEncoder.encode("日出库明细统计", "UTF-8").replaceAll("\\+", "%20");
            response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
            List<ViewWorkInBean> list = reportQueryMapper.queryViewWorkOutList(bean);
            // 这里需要设置不关闭流
            EasyExcel.write(response.getOutputStream(), ViewWorkInBean.class).autoCloseStream(Boolean.FALSE).sheet("sheet1").doWrite(list);
        } catch (Exception e) {
            // 重置response
            response.reset();
            response.setContentType("application/json");
            response.setCharacterEncoding("utf-8");
            Map<String, String> map = new HashMap<>();
            map.put("status", "failure");
            map.put("message", "下载文件失败" + e.getMessage());
            response.getWriter().println(JSON.toJSONString(map));
        }
    }
    /**
     * 文件下载并且失败的时候返回json(默认失败了会返回一个有部分数据的Excel)
     * 日入库明细统计
     *
     * @since 2.1.1
     */
    @RequestMapping("/in")
    public void in(HttpServletResponse response, @RequestParam(required = false) ViewWorkInBean bean) throws IOException {
        try {
            response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
            response.setCharacterEncoding("utf-8");
            // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
            String fileName = URLEncoder.encode("日入库明细统计", "UTF-8").replaceAll("\\+", "%20");
            response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
            List<ViewWorkInBean> list = reportQueryMapper.queryViewWorkInList(bean);
            // 这里需要设置不关闭流
            EasyExcel.write(response.getOutputStream(), ViewWorkInBean.class).autoCloseStream(Boolean.FALSE).sheet("sheet1").doWrite(list);
        } catch (Exception e) {
            // 重置response
            response.reset();
            response.setContentType("application/json");
            response.setCharacterEncoding("utf-8");
            Map<String, String> map = new HashMap<>();
            map.put("status", "failure");
            map.put("message", "下载文件失败" + e.getMessage());
            response.getWriter().println(JSON.toJSONString(map));
        }
    }
}
src/main/java/com/zy/asrs/entity/AdjDetl.java
@@ -42,6 +42,11 @@
     */
    @ApiModelProperty(value= "物料号")
    private String matnr;
    /**
     * 物料名称
     */
    @ApiModelProperty(value= "物料名称")
    private String maktx;
    /**
     * 序列码
src/main/java/com/zy/asrs/entity/ViewWorkCountInView.java
@@ -1,11 +1,25 @@
package com.zy.asrs.entity;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.NumberFormat;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import lombok.Data;
@Data
public class ViewWorkCountInView {
    @ColumnWidth(25)
    @ExcelProperty("入库日期")
    private String oneday;
    @ColumnWidth(25)
    @ExcelProperty("物料号")
    private String matnr;
    @ColumnWidth(50)
    @ExcelProperty("物料名称")
    private String maktx;
    private String anfme;
    @ColumnWidth(25)
    @ExcelProperty("数量")
    private Double anfme;
}
src/main/java/com/zy/asrs/entity/ViewWorkInBean.java
@@ -1,10 +1,13 @@
package com.zy.asrs.entity;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.core.common.Cools;
import com.core.common.SpringUtils;
import com.zy.system.entity.User;
import com.zy.system.service.UserService;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.text.SimpleDateFormat;
@@ -12,237 +15,293 @@
/**
 * 入库明细统计
 *
 * @author admin
 * @date 2018年11月26日
 */
@Data
public class ViewWorkInBean {
    @ExcelIgnore
    private int pageNumber;
    private int pageNumber;
    private int pageSize;
    @ExcelIgnore
    private int pageSize;
    private int stay_time;
    @ExcelIgnore
    private int stay_time;
    private String begin_date;
    private String end_date;
    private String query_date;
    @ExcelIgnore
    private String begin_date;
    private Integer row;
    @ExcelIgnore
    private String end_date;
    private String crn_str_time;
    private String crn_end_time;
    @ExcelIgnore
    private String query_date;
    @ApiModelProperty(value= "工作号")
    private Integer wrk_no;
    @ExcelIgnore
    private Integer row;
    @ApiModelProperty(value= "工作时间")
    private Date io_time;
    @ExcelIgnore
    private String crn_str_time;
    @ApiModelProperty(value= "库位号")
    private String loc_no;
    @ExcelIgnore
    private String crn_end_time;
    @ApiModelProperty(value= "货架条码")
    private String zpallet;
    @ColumnWidth(15)
    @ExcelProperty(value = "销售单号")
    private String three_code;
    @ApiModelProperty(value= "数量")
    private Double anfme;
    @ExcelIgnore
    @ExcelProperty(value = "工作号")
    private Integer wrk_no;
    @ApiModelProperty(value= "物料号")
    private String matnr;
    @ColumnWidth(20)
    @ExcelProperty(value = "入库时间")
    private Date io_time;
    @ApiModelProperty(value= "物料号")
    private String maktx;
    @ColumnWidth(20)
    @ExcelProperty(value = "库位号")
    private String loc_no;
    @ApiModelProperty(value= "序列码")
    private String batch;
    @ExcelProperty(value = "货站码")
    private String supp_code;
    @ApiModelProperty(value= "单据编号")
    private String order_no;
    @ExcelProperty(value = "货架条码")
    private String zpallet;
    @ApiModelProperty(value= "规格")
    private String specs;
    @ExcelProperty(value = "数量")
    private Double anfme;
    @ApiModelProperty(value= "批次")
    private String model;
    @ColumnWidth(15)
    @ExcelProperty(value = "物料号")
    private String matnr;
    @ApiModelProperty(value= "颜色")
    private String color;
    @ColumnWidth(35)
    @ExcelProperty(value = "物料名称")
    private String maktx;
    @ApiModelProperty(value= "品牌")
    private String brand;
    @ExcelProperty(value = "序列码")
    private String batch;
    @ApiModelProperty(value= "单位")
    private String unit;
    @ExcelProperty(value = "单据编号")
    private String order_no;
    @ApiModelProperty(value= "单价")
    private Double price;
    @ExcelProperty(value = "规格")
    private String specs;
    @ApiModelProperty(value= "sku")
    private String sku;
    @ExcelProperty(value = "批次")
    private String model;
    @ApiModelProperty(value= "包数")
    private Double units;
    @ExcelIgnore
    private String color;
    @ApiModelProperty(value= "条码")
    private String barcode;
    @ExcelProperty(value = "品牌")
    private String brand;
    @ApiModelProperty(value= "物料状态")
    private String origin;
    @ExcelProperty(value = "单位")
    private String unit;
    @ApiModelProperty(value= "厂家")
    private String manu;
    @ExcelIgnore
    private Double price;
    @ApiModelProperty(value= "单据时间")
    private String manu_date;
    @ExcelProperty(value = "sku")
    private String sku;
    @ApiModelProperty(value= "品项数")
    private String item_num;
    @ExcelIgnore
    private Double units;
    @ApiModelProperty(value= "安全库存量")
    private Double safe_qty;
    @ExcelProperty(value = "条码")
    private String barcode;
    @ApiModelProperty(value= "重量")
    private Double weight;
    @ExcelIgnore
    private String origin;
    @ApiModelProperty(value= "长度")
    private Double length;
    @ExcelIgnore
    @ExcelProperty(value = "厂家")
    private String manu;
    @ApiModelProperty(value= "体积")
    private Double volume;
    @ExcelProperty(value = "单据时间")
    private String manu_date;
    @ApiModelProperty(value= "三方编码")
    private String three_code;
    @ExcelProperty(value = "品项数")
    private String item_num;
    @ApiModelProperty(value= "供应商")
    private String supp;
    @ExcelProperty(value = "安全库存量")
    private Double safe_qty;
    @ApiModelProperty(value= "供应商编码")
    private String supp_code;
    @ExcelProperty(value = "重量")
    private Double weight;
    @ExcelIgnore
    @ExcelProperty(value = "长度")
    private Double length;
    @ExcelIgnore
    @ExcelProperty(value = "体积")
    private Double volume;
    @ApiModelProperty(value= "是否批次 1: 是  0: 否  ")
    private Integer be_batch;
    @ApiModelProperty(value= "保质期")
    private String dead_time;
    private String deadTime=dead_time;
    @ApiModelProperty(value= "预警天数")
    private Integer dead_warn;
    private Integer deadWarn=this.dead_warn;
    @ExcelProperty(value = "供应商")
    private String supp;
    @ApiModelProperty(value= "制购 1: 制造  2: 采购  3: 外协  ")
    private Integer source;
    @ApiModelProperty(value= "要求检验 1: 是  0: 否  ")
    private Integer inspect;
    @ApiModelProperty(value= "危险品 1: 是  0: 否  ")
    private Integer danger;
    @ExcelIgnore
    @ExcelProperty(value = "是否批次 1: 是  0: 否  ")
    private Integer be_batch;
    @ApiModelProperty(value= "修改人员")
    private Long modi_user;
    @ExcelIgnore
    @ExcelProperty(value = "保质期")
    private String dead_time;
    @ExcelIgnore
    private String deadTime = dead_time;
    @ExcelIgnore
    @ExcelProperty(value = "预警天数")
    private Integer dead_warn;
    @ExcelIgnore
    private Integer deadWarn = this.dead_warn;
    @ExcelIgnore
    @ExcelProperty(value = "制购 1: 制造  2: 采购  3: 外协  ")
    private Integer source;
    @ExcelIgnore
    @ExcelProperty(value = "要求检验 1: 是  0: 否  ")
    private Integer inspect;
    @ExcelIgnore
    @ExcelProperty(value = "危险品 1: 是  0: 否  ")
    private Integer danger;
    @ApiModelProperty(value= "修改时间")
    private Object modi_time;
    @ExcelProperty(value = "修改人员")
    private Long modi_user;
    @ApiModelProperty(value= "创建者")
    private Long appe_user;
    @ExcelProperty(value = "修改时间")
    private Date modi_time;
    @ApiModelProperty(value= "添加时间")
    private Object appe_time;
    @ExcelProperty(value = "创建者")
    private Long appe_user;
    @ApiModelProperty(value= "备注")
    private String memo;
    @ExcelProperty(value = "添加时间")
    private Date appe_time;
    //    工作号
    private Integer wrkNo;
    //    工作时间
    private Date ioTime;
    //单据编号
    private String orderNo;
    //单据时间
    private String manuDate;
    //品项数
    private String itemNum;
    //安全库存量
    private Double safeQty;
    //三方编码
    private String threeCode;
    //供应商编码
    private String suppCode;
    //是否批次 1: 是  0: 否
    private Integer beBatch;
    //    修改人员
    private Long modiUser;
    //    修改时间
    private Object modiTime;
    //    创建者
    private Long appeUser;
    //    添加时间
    private Object appeTime;
    public void sype(){
        //    工作号
        wrkNo=wrk_no;
        //    工作时间
        ioTime=io_time;
        //单据编号
        orderNo=order_no;
        //单据时间
        manuDate=manu_date;
        //品项数
        itemNum=item_num;
        //安全库存量
        safeQty=safe_qty;
        //三方编码
        threeCode=three_code;
        //供应商编码
        suppCode=supp_code;
        //是否批次 1: 是  0: 否
        beBatch=be_batch;
        //    修改人员
        modiUser=modi_user;
        //    修改时间
        modiTime=modi_time;
        //    创建者
        appeUser=appe_user;
        //    添加时间
        appeTime=appe_time;
    }
    @ExcelProperty(value = "备注")
    private String memo;
    public String getModiUser$(){
        UserService service = SpringUtils.getBean(UserService.class);
        User user = service.selectById(this.modi_user);
        if (!Cools.isEmpty(user)){
            return String.valueOf(user.getUsername());
        }
        return null;
    }
    @ExcelIgnore
    @ExcelProperty(value = "工作号")
    //    工作号
    private Integer wrkNo;
    @ExcelIgnore
    @DateTimeFormat(value = "yyyy-MM-dd HH:mm:ss")
    @ExcelProperty(value = "工作时间")
    //    工作时间
    private Date ioTime;
    @ExcelIgnore
    @ExcelProperty(value = "单据编号")
    //单据编号
    private String orderNo;
    @ExcelIgnore
    @ExcelProperty(value = "单据时间")
    //单据时间
    private String manuDate;
    @ExcelIgnore
    @ExcelProperty(value = "品项数")
    //品项数
    private String itemNum;
    @ExcelIgnore
    @ExcelProperty(value = "安全库存量")
    //安全库存量
    private Double safeQty;
    @ExcelIgnore
    @ExcelProperty(value = "销售单号")
    //三方编码
    private String threeCode;
    @ExcelIgnore
    @ExcelProperty(value = "供应商编码")
    //供应商编码
    private String suppCode;
    @ExcelIgnore
    @ExcelProperty(value = "师傅批次")
    //是否批次 1: 是  0: 否
    private Integer beBatch;
    @ExcelIgnore
    @ExcelProperty(value = "修改人员")
    //    修改人员
    private Long modiUser;
    @ExcelIgnore
    @ExcelProperty(value = "修改时间")
    //    修改时间
    private Date modiTime;
    @ExcelIgnore
    @ExcelProperty(value = "创建者")
    //    创建者
    private Long appeUser;
    @ExcelIgnore
    @ExcelProperty(value = "添加时间")
    //    添加时间
    private Date appeTime;
    public String getAppeUser$(){
        UserService service = SpringUtils.getBean(UserService.class);
        User user = service.selectById(this.appe_user);
        if (!Cools.isEmpty(user)){
            return String.valueOf(user.getUsername());
        }
        return null;
    }
    public void sype() {
        //    工作号
        wrkNo = wrk_no;
        //    工作时间
        ioTime = io_time;
        //单据编号
        orderNo = order_no;
        //单据时间
        manuDate = manu_date;
        //品项数
        itemNum = item_num;
        //安全库存量
        safeQty = safe_qty;
        //三方编码
        threeCode = three_code;
        //供应商编码
        suppCode = supp_code;
        //是否批次 1: 是  0: 否
        beBatch = be_batch;
        //    修改人员
        modiUser = modi_user;
        //    修改时间
        modiTime = modi_time;
        //    创建者
        appeUser = appe_user;
        //    添加时间
        appeTime = appe_time;
    }
    public String getIoTime$(){
        if (Cools.isEmpty(this.io_time)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.io_time);
    }
    public String getModiUser$() {
        UserService service = SpringUtils.getBean(UserService.class);
        User user = service.selectById(this.modi_user);
        if (!Cools.isEmpty(user)) {
            return String.valueOf(user.getUsername());
        }
        return null;
    }
    public void setQuery_date(String query_date) {
        this.query_date = query_date;
        if (query_date.contains(" - ")) {
            String[] dates = query_date.split(" - ");
            this.begin_date = dates[0];
            this.end_date = dates[1];
    public String getAppeUser$() {
        UserService service = SpringUtils.getBean(UserService.class);
        User user = service.selectById(this.appe_user);
        if (!Cools.isEmpty(user)) {
            return String.valueOf(user.getUsername());
        }
        return null;
    }
        }
    }
    public String getIoTime$() {
        if (Cools.isEmpty(this.io_time)) {
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.io_time);
    }
    public void setQuery_date(String query_date) {
        this.query_date = query_date;
        if (query_date.contains(" - ")) {
            String[] dates = query_date.split(" - ");
            this.begin_date = dates[0];
            this.end_date = dates[1];
        }
    }
}
src/main/java/com/zy/asrs/mapper/ReportQueryMapper.java
@@ -89,6 +89,7 @@
    List<ViewWorkCountInView> selectWorkCountIn(@Param("curr") Integer curr, @Param("limit") Integer limit, @Param("matnr")String matnr, @Param("start") String startTime, @Param("end") String endTime);
    Integer selectWorkCountInTotal(String matnr, @Param("start") String startTime, @Param("end") String endTime);
    List<ViewWorkCountInView> selectWorkCountOut(@Param("curr") Integer pageNumber, @Param("limit") Integer pageSize, String matnr, @Param("start") String startTime, @Param("end") String endTime);
src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
@@ -164,6 +164,12 @@
            if (!orderDetlService.update(orderDetl,new EntityWrapper<OrderDetl>().eq("order_no", pick.getOrderNo()).eq("matnr", pick.getMatnr()).eq("three_code",pick.getThreeCode()))){
                throw new CoolException("修改订单明细失败,请联系管理员"+pick.getOrderNo()+pick.getMatnr());
            }
            Order order = orderService.selectByNo(orderDetl.getOrderNo());
            if (order.getSettle() == 1) {
                if (!orderService.updateSettle(order.getId(), 2L, userId)) {
                    throw new CoolException("再次拣料:更新订单状态失败!");
                }
            }
        }
        //  确认是否全部出库
        double totleWrkdetl = 0.0;
@@ -183,7 +189,7 @@
//        agvLocDetls.size() == 1
        return "组托成功,绑定站点成功";
        return "拣料成功";
    }
    /*
@@ -422,6 +428,8 @@
            if (agvLocMast.getFloor() != floor) {
                if (agvLocMast.getFloor() == 1 && (floor == 2 || floor == 3)) {
                    throw new CoolException("当前库位请选择调拨单调拨!");
                } else if  ((agvLocMast.getFloor() == 2 || agvLocMast.getFloor() == 3) && (floor == 1 || floor == 4)) {
                    throw new CoolException("当前库位请选择调拨回流单回退!");
                } else {
                    ioType = 12;
                }
@@ -512,29 +520,29 @@
            });
        }
        // 如果当前任务是箱壳二三楼回退一楼的 回滚调拨单
        if (ioType == 12 && locMast.getFloor() == 1 && floor != 4 && agvLocMast.getFloor() != 1) {
            List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", agvLocMast.getLocNo()));
            for (AgvLocDetl agvLocDetl : agvLocDetls) {
                OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("three_code", agvLocDetl.getThreeCode()).eq("matnr", agvLocDetl.getMatnr()).eq("source", 33));
                if (Cools.isEmpty(orderDetl)) {
                    throw new CoolException("当前物料的调拨单不存在!");
                }
                Order order = orderService.selectByNo(orderDetl.getOrderNo());
                if (Cools.isEmpty(order)) {
                    throw new CoolException("当前物料的调拨单不存在!");
                }
                if (order.getSettle() == 4L) {
                    if (!orderService.updateSettle(order.getId(),2L,userId)) {
                        throw new CoolException("调拨单回滚异常!");
                    }
                }
                orderDetl.setQty(orderDetl.getQty() - agvLocDetl.getAnfme());
                if (!orderDetlService.updateById(orderDetl)) {
                    throw new CoolException("保存工作明细失败");
                }
            }
        }
//        // 如果当前任务是箱壳二三楼回退一楼的 回滚调拨单
//        if (ioType == 12 && locMast.getFloor() == 1 && floor != 4 && agvLocMast.getFloor() != 1) {
//            List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", agvLocMast.getLocNo()));
//            for (AgvLocDetl agvLocDetl : agvLocDetls) {
//                OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("three_code", agvLocDetl.getThreeCode()).eq("matnr", agvLocDetl.getMatnr()).eq("source", 33));
//                if (Cools.isEmpty(orderDetl)) {
//                    throw new CoolException("当前物料的调拨单不存在!");
//                }
//                Order order = orderService.selectByNo(orderDetl.getOrderNo());
//                if (Cools.isEmpty(order)) {
//                    throw new CoolException("当前物料的调拨单不存在!");
//                }
//                if (order.getSettle() == 4L) {
//                    if (!orderService.updateSettle(order.getId(),2L,userId)) {
//                        throw new CoolException("调拨单回滚异常!");
//                    }
//                }
//                orderDetl.setQty(orderDetl.getQty() - agvLocDetl.getAnfme());
//                if (!orderDetlService.updateById(orderDetl)) {
//                    throw new CoolException("保存工作明细失败");
//                }
//            }
//        }
        //更新目标库位状态
        updateAgvLocMast(agvLocMast,"P");
        updateAgvLocMast(locMast,"Q");
src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
@@ -690,6 +690,7 @@
                        adjDetl.setLocNo(locDetl.getLocNo());
                        adjDetl.setMatnr(locDetl.getMatnr());
                        adjDetl.setBatch(locDetl.getBatch());
                        adjDetl.setMaktx(locDetl.getMaktx());
                        adjDetl.setOriQty(locDetl.getAnfme());
                        adjDetl.setAdjQty(adjust.getCount());
                        adjDetl.setModiTime(now);
@@ -721,6 +722,7 @@
            adjDetl.setLocNo(locDetl.getLocNo());
            adjDetl.setMatnr(locDetl.getMatnr());
            adjDetl.setBatch(locDetl.getBatch());
            adjDetl.setMaktx(locDetl.getMaktx());
            adjDetl.setOriQty(locDetl.getAnfme());
            adjDetl.setAdjQty(0.0D);
            adjDetl.setModiTime(now);
@@ -757,6 +759,7 @@
            adjDetl.setLocNo(locMast.getLocNo());
            adjDetl.setMatnr(adjust.getMatnr());
            adjDetl.setBatch(adjust.getBatch());
            adjDetl.setMaktx(locDetl.getMaktx());
            adjDetl.setOriQty(0.0D);
            adjDetl.setAdjQty(adjust.getCount());
            adjDetl.setModiTime(now);
@@ -1009,15 +1012,15 @@
                String locNo = wrkMast.getSourceLocNo();
                // 目标库位
                String targetLocNo = wrkMast.getLocNo();
                agvLocMastService.updateLocStsByLocNo(locNo,"F",wrkMast.getBarcode(),(short)getContainerTypeByloc(locNo),"",(short)0);
                agvLocMastService.updateLocStsByLocNo(locNo, "F", wrkMast.getBarcode(), (short) getContainerTypeByloc(locNo), "", (short) 0);
                if (wrkMast.getIoType() == 108) {
                    if (wrkMast.getWrkSts() != 22) {
                        agvLocMastService.updateLocStsByLocNo(targetLocNo,"O","",null);
                        agvLocMastService.updateLocStsByLocNo(targetLocNo, "O", "", null);
                    }
                } else {
                    if (wrkMast.getWrkSts() != 207L && wrkMast.getWrkSts() != 205L) {
                        if (wrkMast.getWrkSts() != 22) {
                            agvBasDevpService.updateLocStsAndBarcodeByDevNo(targetLocNo,"O","",wrkMast.getWhsType().shortValue());
                            agvBasDevpService.updateLocStsAndBarcodeByDevNo(targetLocNo, "O", "", wrkMast.getWhsType().shortValue());
                        }
                    } else {
                        throw new CoolException("当前作业不能取消!");
@@ -1029,10 +1032,10 @@
                List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", locNo));
                // 更新订单
                for (AgvLocDetl agvLocDetl : agvLocDetls) {
                    OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("order_no", "DB" + agvLocDetl.getOrderNo()).eq("matnr", agvLocDetl.getMatnr()).eq("three_code",agvLocDetl.getThreeCode()));
                    OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("order_no", "DB" + agvLocDetl.getOrderNo()).eq("matnr", agvLocDetl.getMatnr()).eq("three_code", agvLocDetl.getThreeCode()));
                    orderDetl.setQty(orderDetl.getQty() - agvLocDetl.getAnfme());
                    if (!orderDetlService.update(orderDetl,new EntityWrapper<OrderDetl>().eq("order_no","DB" + agvLocDetl.getOrderNo()).eq("matnr", agvLocDetl.getMatnr()).eq("three_code",agvLocDetl.getThreeCode()))){
                        throw new CoolException("修改订单明细失败,请联系管理员"+agvLocDetl.getOrderNo()+agvLocDetl.getMatnr());
                    if (!orderDetlService.update(orderDetl, new EntityWrapper<OrderDetl>().eq("order_no", "DB" + agvLocDetl.getOrderNo()).eq("matnr", agvLocDetl.getMatnr()).eq("three_code", agvLocDetl.getThreeCode()))) {
                        throw new CoolException("修改订单明细失败,请联系管理员" + agvLocDetl.getOrderNo() + agvLocDetl.getMatnr());
                    }
//                    FlowLog flowLog = new FlowLog();
//                    flowLog.setFid(String.valueOf(flowId));
@@ -1061,6 +1064,27 @@
//                    if (!flowLogService.insert(flowLog)) {
//                        throw new CoolException("同步半成品调拨单流水记录失败");
//                    }
                }
                // 回流单取消
            } else if (wrkMast.getIoType() == 114) {
                //源库位
                String locNo = wrkMast.getSourceLocNo();
                // 目标库位
                String targetLocNo = wrkMast.getLocNo();
                agvLocMastService.updateLocStsByLocNo(locNo,"F",wrkMast.getBarcode(),(short)getContainerTypeByloc(locNo));
                agvLocMastService.updateLocStsByLocNo(targetLocNo,"O","",null);
                // 源库位 库位主档
                AgvLocMast sourceLocMast = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", locNo));
                AgvLocMast locMast = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", targetLocNo));
                // 当前任务是跨层移库  且目标楼层是1楼的 回滚调拨单
                List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", locNo));
                for (AgvLocDetl agvLocDetl : agvLocDetls) {
                    OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("three_code", agvLocDetl.getThreeCode()).eq("matnr", agvLocDetl.getMatnr()).eq("source", 17));
                    orderDetl.setQty(orderDetl.getQty() - agvLocDetl.getAnfme());
                    if (!orderDetlService.updateById(orderDetl)) {
                        throw new CoolException("更新订单明细失败");
                    }
                }
                //出库取消
            } else {
@@ -1105,7 +1129,7 @@
            }
            if(wrkMast.getIoType() != 1 && wrkMast.getIoType() != 10 && wrkMast.getIoType()!=111 && wrkMast.getIoType()!=108 && wrkMast.getIoType() != 12 && wrkMast.getIoType() != 11){
            if(wrkMast.getIoType() != 114 && wrkMast.getIoType() != 1 && wrkMast.getIoType() != 10 && wrkMast.getIoType()!=111 && wrkMast.getIoType()!=108 && wrkMast.getIoType() != 12 && wrkMast.getIoType() != 11){
                //订单回滚
                //List<AgvWrkDetl> agvWrkDetlList = agvWrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
                List<AgvWrkDetl> agvWrkDetlList1 = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java
@@ -225,6 +225,7 @@
        }
        agvTaskCreateParam.setTaskCode(agvWrkMast.getWrkNo().toString());
        switch (agvWrkMast.getIoType()) {
            case 114:
            case 108:
            case 12:
                agvTaskCreateParam.setTaskTyp("F06");
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -983,6 +983,7 @@
                        adjDetl.setLocNo(locDetl.getLocNo());
                        adjDetl.setMatnr(locDetl.getMatnr());
                        adjDetl.setBatch(locDetl.getBatch());
                        adjDetl.setMaktx(locDetl.getMaktx());
                        adjDetl.setOriQty(locDetl.getAnfme());
                        adjDetl.setAdjQty(adjust.getCount());
                        adjDetl.setModiTime(now);
@@ -1012,6 +1013,7 @@
            adjDetl.setLocNo(locDetl.getLocNo());
            adjDetl.setMatnr(locDetl.getMatnr());
            adjDetl.setBatch(locDetl.getBatch());
            adjDetl.setMaktx(locDetl.getMaktx());
            adjDetl.setOriQty(locDetl.getAnfme());
            adjDetl.setAdjQty(0.0D);
            adjDetl.setModiTime(now);
@@ -1047,6 +1049,7 @@
            adjDetl.setLocNo(locMast.getLocNo());
            adjDetl.setMatnr(adjust.getMatnr());
            adjDetl.setBatch(adjust.getBatch());
            adjDetl.setMaktx(locDetl.getMaktx());
            adjDetl.setOriQty(0.0D);
            adjDetl.setAdjQty(adjust.getCount());
            adjDetl.setModiTime(now);
src/main/java/com/zy/asrs/task/AgvWrkMastScheduler.java
@@ -136,7 +136,8 @@
                .or().eq("io_type", 108)
                .or().eq("io_type", 111)
                .or().eq("io_type", 112)
                .or().eq("io_type", 113)).getRecords();
                .or().eq("io_type", 113)
                .or().eq("io_type", 114)).getRecords();
        if(!Cools.isEmpty(agvWrkMastList)){
            agvWrkMastList.forEach(agvWrkMast -> {
src/main/resources/application.yml
@@ -1,5 +1,5 @@
server:
  port: 8080
  port: 8083
  servlet:
    context-path: /@pom.build.finalName@
@@ -87,19 +87,12 @@
u8:
  url: http://192.168.9.3:8877
  orderReportPath: /DBMS/U8/CM/add
#ERP:
#  url: http://39.184.149.30:8877
#  orderReportPath: /DBMS/U8/CM/add
mes:
  url: https://v3-ali.blacklake.cn/api/openapi/domain/web/v1/route
  orderReportPath: /inventory/open/v2/transfer_order/ordinary/_execute
  pakinReportPath: /inventory/open/v2/inbound_order/execute/_inbound
  buyPakinReportPath: /schedule-for-yinzuo/open/yinzuo/inboundOrder
  pakoutReportPath: /inventory/open/v2/outbound_order/_outbound_by_suggest
  getTokenUrl: https://v3-ali.blacklake.cn
  getTokenPath: /api/openapi/domain/api/v1/access_token/_get_access_token
  appKey: cli_1712644281065780
  appSecret: 6710d24e31e64adc963d4c213b2c9b8e
ERP:
  url: http://39.184.149.30:8877
  orderReportPath: /DBMS/U8/CM/add
MES:
  url: http://192.168.1.55:8010
  orderReportPath: /api/RdAudit
agvBasDev:
  maxWorkNum: 1
src/main/resources/mapper/OrderMapper.xml
@@ -64,12 +64,12 @@
    </update>
    <select id="selectComplete" resultMap="BaseResultMap">
        select top 5 *
        select TOP 5 *
        from man_order
        where 1=1
        and settle = 4
        and status = 1
        order by create_time asc
        order by newID(), create_time asc
    </select>
    <select id="selectorderNoL" resultMap="BaseResultMap">
src/main/resources/mapper/ViewStockUseMapper.xml
@@ -152,7 +152,10 @@
             </if>
            ) a ) b
    WHERE 1=1 and b.row between ((#{curr}-1)*#{limit}+1) and (#{curr}*#{limit})
    WHERE 1=1
    <if test="curr != null and curr !=''">
        and b.row between ((#{curr}-1)*#{limit}+1) and (#{curr}*#{limit})
    </if>
</select>
<select id="selectWorkCountInTotal" resultType="java.lang.Integer">
@@ -183,7 +186,10 @@
        and matnr = #{matnr}
    </if>
    ) a ) b
    WHERE 1=1 and b.row between ((#{curr}-1)*#{limit}+1) and (#{curr}*#{limit})
    WHERE 1=1
    <if test="curr != null and curr !=''">
        and b.row between ((#{curr}-1)*#{limit}+1) and (#{curr}*#{limit})
    </if>
</select>
<select id="selectWorkCountOutTotal" resultType="java.lang.Integer">
    SELECT COUNT(*) FROM asr_wrkout_count_view
src/main/resources/mapper/ViewWorkInMapper.xml
@@ -87,7 +87,10 @@
            where 1=1
            <include refid="viewWorkInConditionSql"></include>
        ) t
    ) a where 1=1 and a.row between ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize})
    ) a where 1=1
        <if test="pageNumber!=null and pageSize!=null">
            and a.row between ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize})
        </if>
</select>
<select id="getViewWorkInCount" parameterType="com.zy.asrs.entity.ViewWorkInBean"    resultType="Integer">
@@ -132,8 +135,10 @@
            where 1=1
            <include refid="viewWorkInConditionSql"></include>
        ) t
    ) a where 1=1 and a.row between ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize})
    ) a where 1=1
    <if test="pageNumber!=null and pageSize!=null">
        and a.row between ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize})
    </if>
</select>
<select id="getViewWorkOutCount" parameterType="com.zy.asrs.entity.ViewWorkInBean"    resultType="Integer">
src/main/webapp/static/js/agvHandWrkMast/agvHandWrkMast.js
@@ -109,6 +109,7 @@
                        'wrkMast': exportData,
                        'fields': fields
                    };
                    $.ajax({
                        url: baseUrl+"/wrkMast/export/auth",
                        headers: {'token': localStorage.getItem('token')},
src/main/webapp/static/js/handWrkMast/handWrkMast.js
@@ -101,32 +101,40 @@
                            fields.push(col.field);
                        }
                    });
                    // var exportData = {};
                    // $.each($('#search-box [name]').serializeArray(), function() {
                    //     exportData[this.name] = this.value;
                    // });
                    // var param = {
                    //     'wrkMast': exportData,
                    //     'fields': fields
                    // };
                    var param = '?';
                    var exportData = {};
                    $.each($('#search-box [name]').serializeArray(), function() {
                        exportData[this.name] = this.value;
                        param += this.name + '=' + this.value + '&';
                    });
                    var param = {
                        'wrkMast': exportData,
                        'fields': fields
                    };
                    $.ajax({
                        url: baseUrl+"/wrkMast/export/auth",
                        headers: {'token': localStorage.getItem('token')},
                        data: JSON.stringify(param),
                        dataType:'json',
                        contentType:'application/json;charset=UTF-8',
                        method: 'POST',
                        success: function (res) {
                            layer.closeAll();
                            if (res.code === 200) {
                                table.exportFile(titles,res.data,'xls');
                            } else if (res.code === 403) {
                                top.location.href = baseUrl+"/";
                            } else {
                                layer.msg(res.msg)
                            }
                        }
                    });
                    window.location.href = baseUrl + "/report/download/wrkMastLog" + param;
                    layer.closeAll();
                    // $.ajax({
                    //     url: baseUrl+"/wrkMast/export/auth",
                    //     headers: {'token': localStorage.getItem('token')},
                    //     data: JSON.stringify(param),
                    //     dataType:'json',
                    //     contentType:'application/json;charset=UTF-8',
                    //     method: 'POST',
                    //     success: function (res) {
                    //         layer.closeAll();
                    //         if (res.code === 200) {
                    //             table.exportFile(titles,res.data,'xls');
                    //         } else if (res.code === 403) {
                    //             top.location.href = baseUrl+"/";
                    //         } else {
                    //             layer.msg(res.msg)
                    //         }
                    //     }
                    // });
                });
                break;
        }
src/main/webapp/static/js/report/workCountIn.js
@@ -1,16 +1,17 @@
var pageCurr;
function getCol() {
    var cols = [
        {field: 'oneday', align: 'center', title: '入库日期', width: 200}
        ,{field: 'matnr', align: 'center',title: '物料号'}
        ,{field: 'maktx', align: 'center',title: '物料名称'}
        ,{field: 'anfme', align: 'center',title: '数量'}
        , {field: 'matnr', align: 'center', title: '物料号'}
        , {field: 'maktx', align: 'center', title: '物料名称'}
        , {field: 'anfme', align: 'center', title: '数量'}
    ];
    return cols;
}
layui.use(['table','laydate', 'form'], function(){
layui.use(['table', 'laydate', 'form'], function () {
    var table = layui.table;
    var $ = layui.jquery;
    var layer = layui.layer;
@@ -22,7 +23,7 @@
    tableIns = table.render({
        elem: '#workIn',
        headers: {token: localStorage.getItem('token')},
        url: baseUrl+'/report/viewWorkCountInList.action',
        url: baseUrl + '/report/viewWorkCountInList.action',
        page: true,
        limit: 16,
        limits: [16, 30, 50, 100, 200, 500],
@@ -45,12 +46,12 @@
        response: {
            statusCode: 200
        },
        done: function(res, curr, count) {
        done: function (res, curr, count) {
            if (res.code === 403) {
                top.location.href = baseUrl+"/";
                top.location.href = baseUrl + "/";
            }
            pageCurr=curr;
            pageCurr = curr;
            limit();
        }
    });
@@ -58,7 +59,7 @@
    // 监听排序事件
    table.on('sort(workIn)', function (obj) {
        var searchData = {};
        $.each($('#search-box [name]').serializeArray(), function() {
        $.each($('#search-box [name]').serializeArray(), function () {
            searchData[this.name] = this.value;
        });
        searchData['orderByField'] = obj.field;
@@ -70,9 +71,9 @@
            },
            done: function (res, curr, count) {
                if (res.code === 403) {
                    top.location.href = baseUrl+"/";
                    top.location.href = baseUrl + "/";
                }
                pageCurr=curr;
                pageCurr = curr;
                limit();
            }
        });
@@ -81,43 +82,51 @@
    // 监听头工具栏事件
    table.on('toolbar(workIn)', function (obj) {
        var checkStatus = table.checkStatus(obj.config.id);
        switch(obj.event) {
        switch (obj.event) {
            case 'exportData':
                layer.confirm('确定导出Excel吗', {shadeClose: true}, function(){
                    var titles=[];
                    var fields=[];
                layer.confirm('确定导出Excel吗', {shadeClose: true}, function () {
                    var titles = [];
                    var fields = [];
                    obj.config.cols[0].map(function (col) {
                        if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
                            titles.push(col.title);
                            fields.push(col.field);
                        }
                    });
                    var param = '?';
                    var exportData = {};
                    $.each($('#search-box [name]').serializeArray(), function() {
                    $.each($('#search-box [name]').serializeArray(), function () {
                        exportData[this.name] = this.value;
                        param += this.name + '=' + this.value + '&';
                    });
                    var param = {
                        fields: fields,
                        exportData: exportData
                    };
                    $.ajax({
                        url: baseUrl+"/report/viewWorkInExport.action",
                        headers: {'token': localStorage.getItem('token')},
                        data: JSON.stringify(param),
                        dataType:'json',
                        contentType:'application/json;charset=UTF-8',
                        method: 'POST',
                        success: function (res) {
                            layer.closeAll();
                            if (res.code === 200) {
                                table.exportFile(titles,res.data,'xls');
                            } else if (res.code === 403) {
                                top.location.href = baseUrl+"/";
                            } else {
                                layer.msg(res.msg)
                            }
                        }
                    });
                    window.location.href = baseUrl + "/report/download/countIn" + param;
                    layer.closeAll();
                    // var param = {
                    //     fields: fields,
                    //     exportData: exportData
                    // };
                    // $.ajax({
                    //     url: baseUrl + "/report/download/in",
                    //     headers: {'token': localStorage.getItem('token')},
                    //     data: JSON.stringify(param),
                    //     responseType: "blob",
                    //     contentType: 'application/json;charset=UTF-8',
                    //     method: 'POST',
                    //     success: function (res) {
                    //         layer.closeAll();
                    //         if (res.code === 200) {
                    //             var blob = new Blob([response], { type: 'application/vnd.ms-excel' });
                    //             var link = document.createElement('a');
                    //             link.href = URL.createObjectURL(blob);
                    //             link.download = 'exported_file.xls'; // 设置下载文件名
                    //             link.click();
                    //         } else if (res.code === 403) {
                    //             top.location.href = baseUrl + "/";
                    //         } else {
                    //             layer.msg(res.msg)
                    //         }
                    //     }
                    // });
                });
                break;
        }
@@ -136,19 +145,19 @@
    });
    layDate.render({
        elem: '.layui-laydate-range'
        ,type: 'datetime'
        ,range: true
        , type: 'datetime'
        , range: true
    });
});
// 关闭动作
$(document).on('click','#data-detail-close', function () {
$(document).on('click', '#data-detail-close', function () {
    parent.layer.closeAll();
});
function tableReload(child) {
    var searchData = {};
    $.each($('#search-box [name]').serializeArray(), function() {
    $.each($('#search-box [name]').serializeArray(), function () {
        searchData[this.name] = this.value;
    });
    (child ? parent.tableIns : tableIns).reload({
@@ -158,14 +167,14 @@
        },
        done: function (res, curr, count) {
            if (res.code === 403) {
                top.location.href = baseUrl+"/";
                top.location.href = baseUrl + "/";
            }
            pageCurr=curr;
            pageCurr = curr;
            if (res.data.length === 0 && count !== 0) {
                tableIns.reload({
                    where: searchData,
                    page: {
                        curr: pageCurr-1
                        curr: pageCurr - 1
                    }
                });
                pageCurr -= 1;
@@ -179,9 +188,9 @@
    for (var val in data) {
        var find = el.find(":input[id='" + val + "']");
        find.val(data[val]);
        if (showImg){
        if (showImg) {
            var next = find.next();
            if (next.get(0)){
            if (next.get(0)) {
                if (next.get(0).localName === "img") {
                    find.hide();
                    next.attr("src", data[val]);
@@ -201,13 +210,13 @@
function detailScreen(index) {
    var detail = layer.getChildFrame('#data-detail', index);
    var height = detail.height()+60;
    if (height > ($(window).height()*0.9)) {
        height = ($(window).height()*0.9);
    var height = detail.height() + 60;
    if (height > ($(window).height() * 0.9)) {
        height = ($(window).height() * 0.9);
    }
    layer.style(index, {
        top: (($(window).height()-height)/3)+"px",
        height: height+'px'
        top: (($(window).height() - height) / 3) + "px",
        height: height + 'px'
    });
    $(".layui-layer-shade").remove();
}
src/main/webapp/static/js/report/workCountOut.js
@@ -91,32 +91,34 @@
                            fields.push(col.field);
                        }
                    });
                    var exportData = {};
                    var param = '?';
                    $.each($('#search-box [name]').serializeArray(), function() {
                        exportData[this.name] = this.value;
                        param += this.name + '=' + this.value + '&';
                    });
                    var param = {
                        fields: fields,
                        exportData: exportData
                    };
                    $.ajax({
                        url: baseUrl+"/report/viewWorkOutExport.action",
                        headers: {'token': localStorage.getItem('token')},
                        data: JSON.stringify(param),
                        dataType:'json',
                        contentType:'application/json;charset=UTF-8',
                        method: 'POST',
                        success: function (res) {
                            layer.closeAll();
                            if (res.code === 200) {
                                table.exportFile(titles,res.data,'xls');
                            } else if (res.code === 403) {
                                top.location.href = baseUrl+"/";
                            } else {
                                layer.msg(res.msg)
                            }
                        }
                    });
                    window.location.href = baseUrl + "/report/download/countOut" + param;
                    layer.closeAll();
                    // var param = {
                    //     fields: fields,
                    //     exportData: exportData
                    // };
                    // $.ajax({
                    //     url: baseUrl+"/report/download/out",
                    //     headers: {'token': localStorage.getItem('token')},
                    //     data: JSON.stringify(param),
                    //     dataType:'json',
                    //     contentType:'application/json;charset=UTF-8',
                    //     method: 'POST',
                    //     success: function (res) {
                    //         layer.closeAll();
                    //         if (res.code === 200) {
                    //             table.exportFile(titles,res.data,'xls');
                    //         } else if (res.code === 403) {
                    //             top.location.href = baseUrl+"/";
                    //         } else {
                    //             layer.msg(res.msg)
                    //         }
                    //     }
                    // });
                });
                break;
        }
src/main/webapp/static/js/report/workIn.js
@@ -88,32 +88,38 @@
                            fields.push(col.field);
                        }
                    });
                    var exportData = {};
                    var param = '?';
                    $.each($('#search-box [name]').serializeArray(), function() {
                        exportData[this.name] = this.value;
                        param += this.name + '=' + this.value + '&';
                    });
                    var param = {
                        fields: fields,
                        exportData: exportData
                    };
                    $.ajax({
                        url: baseUrl+"/report/viewWorkInExport.action",
                        headers: {'token': localStorage.getItem('token')},
                        data: JSON.stringify(param),
                        dataType:'json',
                        contentType:'application/json;charset=UTF-8',
                        method: 'POST',
                        success: function (res) {
                            layer.closeAll();
                            if (res.code === 200) {
                                table.exportFile(titles,res.data,'xls');
                            } else if (res.code === 403) {
                                top.location.href = baseUrl+"/";
                            } else {
                                layer.msg(res.msg)
                            }
                        }
                    });
                    window.location.href = baseUrl + "/report/download/in" + param;
                    layer.closeAll();
                    // var exportData = {};
                    // $.each($('#search-box [name]').serializeArray(), function() {
                    //     exportData[this.name] = this.value;
                    // });
                    // var param = {
                    //     fields: fields,
                    //     exportData: exportData
                    // };
                    // $.ajax({
                    //     url: baseUrl+"/report/viewWorkInExport.action",
                    //     headers: {'token': localStorage.getItem('token')},
                    //     data: JSON.stringify(param),
                    //     dataType:'json',
                    //     contentType:'application/json;charset=UTF-8',
                    //     method: 'POST',
                    //     success: function (res) {
                    //         layer.closeAll();
                    //         if (res.code === 200) {
                    //             table.exportFile(titles,res.data,'xls');
                    //         } else if (res.code === 403) {
                    //             top.location.href = baseUrl+"/";
                    //         } else {
                    //             layer.msg(res.msg)
                    //         }
                    //     }
                    // });
                });
                break;
        }
src/main/webapp/static/js/report/workOut.js
@@ -90,32 +90,38 @@
                            fields.push(col.field);
                        }
                    });
                    var exportData = {};
                    var param = '?';
                    $.each($('#search-box [name]').serializeArray(), function() {
                        exportData[this.name] = this.value;
                        param += this.name + '=' + this.value + '&';
                    });
                    var param = {
                        fields: fields,
                        exportData: exportData
                    };
                    $.ajax({
                        url: baseUrl+"/report/viewWorkOutExport.action",
                        headers: {'token': localStorage.getItem('token')},
                        data: JSON.stringify(param),
                        dataType:'json',
                        contentType:'application/json;charset=UTF-8',
                        method: 'POST',
                        success: function (res) {
                            layer.closeAll();
                            if (res.code === 200) {
                                table.exportFile(titles,res.data,'xls');
                            } else if (res.code === 403) {
                                top.location.href = baseUrl+"/";
                            } else {
                                layer.msg(res.msg)
                            }
                        }
                    });
                    window.location.href = baseUrl + "/report/download/out" + param;
                    layer.closeAll();
                    // var exportData = {};
                    // $.each($('#search-box [name]').serializeArray(), function() {
                    //     exportData[this.name] = this.value;
                    // });
                    // var param = {
                    //     fields: fields,
                    //     exportData: exportData
                    // };
                    // $.ajax({
                    //     url: baseUrl+"/report/viewWorkOutExport.action",
                    //     headers: {'token': localStorage.getItem('token')},
                    //     data: JSON.stringify(param),
                    //     dataType:'json',
                    //     contentType:'application/json;charset=UTF-8',
                    //     method: 'POST',
                    //     success: function (res) {
                    //         layer.closeAll();
                    //         if (res.code === 200) {
                    //             table.exportFile(titles,res.data,'xls');
                    //         } else if (res.code === 403) {
                    //             top.location.href = baseUrl+"/";
                    //         } else {
                    //             layer.msg(res.msg)
                    //         }
                    //     }
                    // });
                });
                break;
        }
src/main/webapp/views/handWrkMast/handWrkMast.html
@@ -104,8 +104,8 @@
</div>
<script type="text/html" id="toolbar">
    <div class="layui-btn-container">
        <button class="layui-btn layui-btn-normal" id="btn-pri-add" lay-event="priAdd"><i class="layui-icon">&#xe624;</i>增加优先级</button>
        <button class="layui-btn layui-btn-normal" id="btn-pri-red" lay-event="priRed"><i class="layui-icon">&#xe67e;</i>降低优先级</button>
<!--        <button class="layui-btn layui-btn-normal" id="btn-pri-add" lay-event="priAdd"><i class="layui-icon">&#xe624;</i>增加优先级</button>-->
<!--        <button class="layui-btn layui-btn-normal" id="btn-pri-red" lay-event="priRed"><i class="layui-icon">&#xe67e;</i>降低优先级</button>-->
        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData">导出</button>
    </div>
</script>
@@ -127,7 +127,7 @@
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/handWrkMast/handWrkMast.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/handWrkMast/handWrkMast.js?v=1" charset="utf-8"></script>
<iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
src/main/webapp/views/report/viewWorkCountIn.html
@@ -46,7 +46,7 @@
<table class="layui-hide" id="workIn" lay-filter="workIn"></table>
<script type="text/html" id="toolbar">
    <div class="layui-btn-container">
<!--        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" >导出</button>-->
        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" >导出</button>
    </div>
</script>
@@ -57,7 +57,7 @@
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/report/workCountIn.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/report/workCountIn.js?v=4" charset="utf-8"></script>
</body>
</html>
src/main/webapp/views/report/viewWorkCountOut.html
@@ -47,7 +47,7 @@
<table class="layui-hide" id="workOut" lay-filter="workOut"></table>
<script type="text/html" id="toolbar">
    <div class="layui-btn-container">
<!--        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" >导出</button>-->
        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" >导出</button>
    </div>
</script>
@@ -58,7 +58,7 @@
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/report/workCountOut.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/report/workCountOut.js?v=1" charset="utf-8"></script>
</body>
</html>
src/main/webapp/views/report/viewWorkIn.html
@@ -55,7 +55,7 @@
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/report/workIn.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/report/workIn.js?v=2" charset="utf-8"></script>
</body>
</html>
src/main/webapp/views/report/viewWorkOut.html
@@ -55,7 +55,7 @@
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/report/workOut.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/report/workOut.js?v=1" charset="utf-8"></script>
</body>
</html>