自动化立体仓库 - WMS系统
#
lsh
2024-01-23 6a31e3759855f9649a323d2a8dd0dfed0cc43319
#
1个文件已添加
16个文件已修改
558 ■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/MobileController.java 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/OpenController.java 63 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/PalletizingCompleteParam2.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/PalletizingCompleteTwoFloorParam.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/TrussCombParam.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/MobileService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/OpenService.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java 178 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java 178 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/BarcodeUploadScheduler.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/LocMoveAllScheduler.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/RailwayPlatformScheduler.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/BareBoardHandler.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/OneLouHangJiaHandler.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/ReportToDismantleTheStackHandler.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/WrkMastMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/saas/locDetl.js 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/MobileController.java
@@ -3,6 +3,7 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.core.annotations.AppAuth;
import com.core.annotations.ManagerAuth;
import com.core.common.BaseRes;
import com.core.common.Cools;
@@ -19,6 +20,7 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
import java.util.List;
@@ -258,12 +260,12 @@
        return R.ok();
    }
    @RequestMapping("/truss/auth")
    @ManagerAuth(memo = "退库,1楼桁架退库")
    public R trussComb(@RequestBody TrussCombParam combParam){
        mobileService.trussComb(combParam, getUserId());
        return R.ok("组托成功");
    }
//    @RequestMapping("/truss/auth")
//    @ManagerAuth(memo = "退库,1楼桁架退库")
//    public R trussComb(@RequestBody TrussCombParam combParam){
//        mobileService.trussComb(combParam, getUserId());
//        return R.ok("组托成功");
//    }
    @RequestMapping("/truss/order/auth")
    @ManagerAuth(memo = "退库,1楼桁架退库,退库单退库")
@@ -273,12 +275,23 @@
    }
    @RequestMapping("/truss/comd/auth")
    @ManagerAuth(memo = "手动入库,2楼无需桁架手动入库")
    public R trussComb2(@RequestBody PalletizingCompleteParam combParam){
        mobileService.trussComb2(combParam, getUserId());
//    @ManagerAuth(memo = "手动入库,2楼无需桁架手动入库 wms入库")
    public R PalletizingCompleteTwoFloorParam(@RequestBody PalletizingCompleteTwoFloorParam combParam){
        mobileService.PalletizingCompleteTwoFloorParam(combParam);
        return R.ok("组托成功");
    }
    /**
     * 中控:2楼212叫托盘
     */
    @PostMapping("/balcony/complete/car/auth/v1")
    @AppAuth(memo = "中控:2楼212叫托盘")
    public synchronized R balconyCompleteCar() {
        mobileService.trussComb2Car(212);
        return R.ok();
    }
    @RequestMapping("/comb/auth")
    @ManagerAuth(memo = "组托")
    public R comb(@RequestBody CombParam combParam){
src/main/java/com/zy/asrs/controller/OpenController.java
@@ -197,7 +197,7 @@
     * 贴标机申请获取货物信息
     */
    @PostMapping("/labeller/mat/auth/v1")
    @AppAuth(memo = "贴标机申请获取货物信息")
    @AppAuth(memo = "贴标机申请获取货物信息") //old需要修改
    public synchronized R labellerMat(@RequestHeader(required = false) String appkey,
                                      @RequestBody LabellerMatParam param,
                                      HttpServletRequest request) {
@@ -209,7 +209,7 @@
     * 贴标机贴标完成
     */
    @PostMapping("/labeller/complete/auth/v1")
    @AppAuth(memo = "贴标机贴标完成")
    @AppAuth(memo = "贴标机贴标完成") //old需要修改
    public synchronized R labellerComplete(@RequestHeader(required = false) String appkey,
                                           @RequestBody LabellerCompleteParam param,
                                           HttpServletRequest request) {
@@ -219,17 +219,15 @@
    }
    /**
     * 中控:码垛完成下发入库信息
     * 中控(2楼):码垛完成下发入库信息
     */
    @PostMapping("/palletizing/complete/auth/v1")
    @AppAuth(memo = "中控(2楼):码垛完成下发入库信息")
    public synchronized R palletizingComplete(@RequestHeader(required = false) String appkey,
                                           @RequestBody PalletizingCompleteParam2 param,
    public synchronized R PalletizingCompleteTwoFloorParam(@RequestHeader(required = false) String appkey,
                                           @RequestBody PalletizingCompleteTwoFloorParam param,
                                           HttpServletRequest request) {
//        appkey = "ea1f0459efc02a79f046f982767939ae";
        auth(appkey, param, request);
        openService.palletizingComplete(param);
        openService.PalletizingCompleteTwoFloorParam(param);
        return R.ok(param);
    }
@@ -241,8 +239,6 @@
    public synchronized R palletizingCompleteS(@RequestHeader(required = false) String appkey,
                                              @RequestBody PalletizingCompleteParam param,
                                              HttpServletRequest request) {
//        appkey = "ea1f0459efc02a79f046f982767939ae";
        auth(appkey, param, request);
        openService.palletizingCompleteS(param);
        return R.ok();
@@ -252,7 +248,7 @@
     * 中控:出库完成月台相关
     */
    @PostMapping("/balcony/complete/auth/v1")
    @AppAuth(memo = "中控:出库完成月台相关")
    @AppAuth(memo = "中控:出库完成月台相关") //old需要修改
    public synchronized R balconyComplete(@RequestHeader(required = false) String appkey,
                                              @RequestBody LabellerMatParam param,
                                              HttpServletRequest request) {
@@ -270,8 +266,6 @@
    public synchronized R singleUnstackingComplete(@RequestHeader(required = false) String appkey,
                                            @RequestBody SingleUnstackingCompleteParam param,
                                            HttpServletRequest request) {
//        appkey = "ea1f0459efc02a79f046f982767939ae";
        auth(appkey, param, request);
        openService.singleUnstackingComplete(param);
        return R.ok(param);
@@ -285,53 +279,10 @@
    public synchronized R singleMountUnstackingComplete(@RequestHeader(required = false) String appkey,
                                            @RequestBody SingleMountUnstackingCompleteParam param,
                                            HttpServletRequest request) {
//        appkey = "ea1f0459efc02a79f046f982767939ae";
        auth(appkey, param, request);
        openService.singleMountUnstackingComplete(param);
        return R.ok(param);
    }
//    /**
//     *  测试1  入库前输送线写入托盘码,216站测试用
//     */
//    @PostMapping("/cs1/auth/v1")
//    @AppAuth(memo = "")
//    public synchronized R cs1(@RequestHeader(required = false) String appkey,
//                                              @RequestBody PalletizingCompleteParam param,
//                                              HttpServletRequest request) {
//        auth(appkey, param, request);
//        openService.cs1(param.getBarcode());
//        return R.ok(param);
//    }
//
//    /**
//     *  测试2  清除托盘码,216站测试用 Copy
//     */
//    @PostMapping("/cs2/auth/v1")
//    @AppAuth(memo = "")
//    public synchronized R cs2(@RequestHeader(required = false) String appkey,
//                                                @RequestBody PalletizingCompleteParam param,
//                                                HttpServletRequest request) {
//        auth(appkey, param, request);
//        openService.cs2();
//        return R.ok(param);
//    }
//
//    /**
//     * 测试3
//     */
//    @PostMapping("/cs3/auth/v1")
////    @AppAuth(memo = "")
//    public synchronized R cs3(@RequestHeader(required = false) String appkey,
//                                                @RequestBody PalletizingCompleteParam param,
//                                                HttpServletRequest request) {
//        auth(appkey, param, request);
//        openService.cs3();
//        return R.ok(param);
//    }
    /*...........................上饶江铜..............以上.............徐工汉云...........................*/
src/main/java/com/zy/asrs/entity/param/PalletizingCompleteParam2.java
@@ -43,20 +43,4 @@
        private String specsDetl;//    (是否需要)    字符串    规格
    }
//    public Integer getDevNo$(){
//        if (!Cools.isEmpty(this.palletizingNo)){
//            switch (this.palletizingNo){
//                case "1":
//                    return 219;
//                case "2":
//                    return 215;
//                case "3":
//                    return 118;
//                default:
//                    return null;
//            }
//        }
//        return null;
//    }
}
src/main/java/com/zy/asrs/entity/param/PalletizingCompleteTwoFloorParam.java
New file
@@ -0,0 +1,33 @@
package com.zy.asrs.entity.param;
import lombok.Data;
import java.util.List;
/*
 *  Created by Monkey D. Luffy on 2023.07.19
 * */
@Data
public class PalletizingCompleteTwoFloorParam {
    private String barcode;//    是    字符串    托盘码
    private Integer palletizingNo;//    是    字符串    码垛位编号
    private String boxType;//    是    字符串    木箱类型
    private List<MatList> matList;//        是    列表    拆垛货物信息(2箱,尾箱可能1箱)
    @Data
    public static class MatList{
        private String matnr;//    是    规格    物料编码
        private String maktx;//    是    物料名称  //不需要
        private String batch;//    是    字符串    木箱编号(唯一字段,出库依据,出库时按照木箱编号出库)
        private String model;//    是    字符串    卷编号(唯一字段)
        private String position;//    是    字符串    木箱码垛位置(拆垛时需要)
        private Double weight;//    是    小数型    重量  净重
        private Double roughWeight;//    是    小数型    重量  毛重
        private Double anfme=1.0;//    是    小数型     //默认
        private Double rollExtent;//    是    小数型    卷长度
    }
}
src/main/java/com/zy/asrs/entity/param/TrussCombParam.java
@@ -60,8 +60,6 @@
    public TrussCombParam(){}
    public TrussCombParam( WrkDetl wrkDetl){
        LocDetlRullUpDetailService locDetlRullUpDetailService = SpringUtils.getBean(LocDetlRullUpDetailService.class);
        this.barcode = wrkDetl.getBarcode();
        this.staStart = 147;
        this.palletizingNo2 = 118;
@@ -78,7 +76,6 @@
        matList.setBoxNo(wrkDetl.getBatch());
        matList.setPosition("1");
        matList.setWeight(wrkDetl.getWeight());
        matList.setSpecs(wrkDetl.getSpecs());
        matLists.add(matList);
        this.matList = matLists;
src/main/java/com/zy/asrs/service/MobileService.java
@@ -16,7 +16,8 @@
    void comb(CombParam param, Long userId);
    void trussComb(TrussCombParam param, Long userId);
    void trussCombOrder(TrussCombParam param, Long userId);
    void trussComb2(PalletizingCompleteParam param, Long userId);
    void PalletizingCompleteTwoFloorParam(PalletizingCompleteTwoFloorParam param);
    void trussComb2Car(Integer staNo);
    /**
     * 上架
src/main/java/com/zy/asrs/service/OpenService.java
@@ -50,15 +50,13 @@
    void balconyComplete(LabellerMatParam param);
    void palletizingComplete(PalletizingCompleteParam2 param);
    void PalletizingCompleteTwoFloorParam(PalletizingCompleteTwoFloorParam param);
    void palletizingCompleteS(PalletizingCompleteParam param);
    void singleUnstackingComplete(SingleUnstackingCompleteParam param);
    void singleMountUnstackingComplete(SingleMountUnstackingCompleteParam param);
    void cs1(String barcode);
    void cs2();
    void cs3();
}
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -20,6 +20,7 @@
import com.zy.common.model.LocTypeDto;
import com.zy.common.model.MesCombParam;
import com.zy.common.model.StartupDto;
import com.zy.common.model.enums.WorkNoType;
import com.zy.common.service.CommonService;
import com.zy.common.utils.HttpHandler;
import lombok.extern.slf4j.Slf4j;
@@ -85,6 +86,8 @@
    private DocTypeService docTypeService;
    @Autowired
    private LocDetlRullUpDetailService locDetlRullUpDetailService;
    @Autowired
    private TagService tagService;
    @Override
@@ -221,7 +224,7 @@
            throw new CoolException("参数:码垛位编号 palletizingNo为空");
        }else if (Cools.isEmpty(param.getOrderNo())){
            throw new CoolException("参数:退货单单号 orderNo为空");
        }else if (Cools.isEmpty(param.getMatList()) || param.getMatList().size() != 1){
        }else if (Cools.isEmpty(param.getMatList())){
            throw new CoolException("参数:物料明细 matLists为空");
        }
@@ -252,45 +255,57 @@
            if (!orderBoxNoList.contains(matList.getBatch())){
                throw new CoolException("单号:"+param.getOrderNo()+" 箱号:"+matList.getBatch()+"不属于此订单或者已经入库");
            }else {
//                if (matList.getAnfme() > orderDetls.get(0).getAnfme()) {
//                    throw new CoolException("箱号:"+orderDetls.get(0).getBatch() + "入库数量不合法");
//                }
                matListBoxNoList.add(matList.getBoxNo());
            }
        }
        List<OrderDetl> orderDetlList = new ArrayList<>();
        for (OrderDetl orderDetl: orderDetls){
            if (matListBoxNoList.contains(orderDetl.getBatch())){
                orderDetl.setBrand("1");
                orderDetlList.add(orderDetl);
            }
        }
        String matnr = null;
        List<WaitPakin> waitPakins = new ArrayList<>();
        String matnrSign = "";
        String brandSign = "";
        for (OrderDetl orderDetl:orderDetlList){
            Mat mat = matService.selectByMatnr(orderDetl.getMatnr());
            if (Cools.isEmpty(mat)) {
                throw new CoolException(orderDetl.getMatnr() + "商品档案不存在");
            if (Cools.isEmpty(orderDetl.getMatnr()) || Cools.isEmpty(orderDetl.getBrand())){
                throw new CoolException(orderDetl.getOrderNo() + "所选明细存在未知规格或者未知箱型,请维护数据!");
            }
            matnr = mat.getMatnr();
            if (matnrSign.equals("")){
                matnrSign = orderDetl.getMatnr();
                brandSign = orderDetl.getBrand();
            }else {
                if (!matnrSign.equals(orderDetl.getMatnr())){
                    throw new CoolException(orderDetl.getMatnr() + "请选择同一个规格的货物!!!");
                }
                if (!brandSign.equals(orderDetl.getBrand())){
                    throw new CoolException(orderDetl.getMatnr() + "请选择同一种箱型的货物!!!");
                }
            }
        }
        Mat mat = matService.selectByMatnr(matnrSign);
        if (Cools.isEmpty(mat)) {
            throw new CoolException(matnrSign + "商品档案不存在");
        }
        for (OrderDetl orderDetl:orderDetlList){
            WaitPakin waitPakin = new WaitPakin();
            waitPakin.sync(mat);
            waitPakin.setOrderNo(order.getOrderNo());   // 单据编号
            waitPakin.setModel(orderDetl.getModel());     //批次
            waitPakin.setSpecs(orderDetl.getSpecs());     //规格
            waitPakin.setBatch(orderDetl.getBatch());       //木箱编码
            waitPakin.setBrand(param.getBoxType());     //木箱类型
            waitPakin.setBrand(orderDetl.getBrand());     //木箱类型
            waitPakin.setZpallet(param.getBarcode());   //托盘码
            waitPakin.setOrigin(orderDetl.getOrigin()); //木箱在托盘上的位置
            waitPakin.setIoStatus("N");     // 入出状态
            waitPakin.setOrigin("1"); //木箱在托盘上的位置
            waitPakin.setIoStatus("Y");     // 入出状态
            waitPakin.setAnfme(orderDetl.getAnfme());  // 木箱中铜箔数量
            waitPakin.setWeight(orderDetl.getWeight());  // 木箱中铜箔净重
            waitPakin.setStatus("Y");    // 状态
            waitPakin.setAppeUser(userId);
            waitPakin.setAppeTime(now);
            waitPakin.setModiUser(userId);
            waitPakin.setModiTime(now);
            waitPakin.setRollUp(orderDetl.getRollUp());
            waitPakin.setZpallet(param.getBarcode());
            if (!waitPakinService.insert(waitPakin)) {
                throw new CoolException("保存入库通知档失败");
@@ -301,7 +316,7 @@
        LocTypeDto locTypeDto = new LocTypeDto();
        locTypeDto.setLocType1((short)1);
        StartupDto dto = commonService.getLocNo(1, 1, 145, matnr,null,null, locTypeDto);
        StartupDto dto = commonService.getLocNo(1, 1, 145, matnrSign,null,null, locTypeDto);
        int workNo = dto.getWorkNo();
        // 生成工作档
@@ -339,7 +354,6 @@
            wrkDetl.setIoTime(wrkMast.getIoTime());
            wrkDetl.setAppeTime(now);
            wrkDetl.setModiTime(now);
            wrkDetl.setRollUp(waitPakin.getRollUp());
            wrkDetl.setZpallet(param.getBarcode());
            if (!wrkDetlService.insert(wrkDetl)) {
                throw new CoolException("保存工作明细失败");
@@ -365,7 +379,51 @@
    @Override
    @Transactional
    public void trussComb2(PalletizingCompleteParam param, Long userId) {
    public void trussComb2Car(Integer staNo) {
        if (staNo!=212){
            throw new CoolException("只允许212呼叫托盘");
        }
        BasDevp basDevp = basDevpService.selectById(212);
        if (!basDevp.getAutoing().equals("Y")){
            throw new CoolException("212站点不是自动");
        } else if (basDevp.getLoading().equals("Y")){
            throw new CoolException("212站点有物");
        } else if (basDevp.getWrkNo()!=0){
            throw new CoolException("212站点有工作号");
        }
        int workNo = 20211;
        WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", 20211));
        if (!Cools.isEmpty(wrkMast1)){
            throw new CoolException("任务档案已存在!请等待...");
        }
        Date now = new Date();
        // 生成工作档
        WrkMast wrkMast = new WrkMast();
        wrkMast.setWrkNo(workNo);
        wrkMast.setIoTime(new Date());
        wrkMast.setWrkSts(61L); // 工作状态:61、等待空板
        wrkMast.setIoType(212); // 入出库状态:212.2楼212呼叫空板
        wrkMast.setIoPri(10D); // 优先级
        wrkMast.setStaNo(212);
        wrkMast.setFullPlt("N"); // 满板:Y
        wrkMast.setPicking("N"); // 拣料
        wrkMast.setExitMk("N"); // 退出
        wrkMast.setEmptyMk("Y"); // 空板
        wrkMast.setLinkMis("Y");
        wrkMast.setCtnType(0); // 容器类型
        // 操作人员数据
        wrkMast.setAppeTime(now);
        wrkMast.setModiTime(now);
        boolean res = wrkMastService.insert(wrkMast);
        if (!res) {
            throw new CoolException("保存工作档失败");
        }
    }
    @Override
    @Transactional
    public void PalletizingCompleteTwoFloorParam(PalletizingCompleteTwoFloorParam param) {
        Long userId = 7777L;//中控
        param.setPalletizingNo(212);
        //判断param参数
        if (Cools.isEmpty(param.getBarcode())){
            throw new CoolException("参数:托盘码 barcode为空");
@@ -373,36 +431,57 @@
            throw new CoolException("参数:码垛位编号 palletizingNo为空");
        }else if (Cools.isEmpty(param.getBoxType())){
            throw new CoolException("参数:木箱类型 boxType为空");
        }else if (Cools.isEmpty(param.getMatLists()) || param.getMatLists().size()==0 || param.getMatLists().size()>2){
        }else if (Cools.isEmpty(param.getMatList()) || param.getMatList().size()==0){
            throw new CoolException("参数:物料明细 matLists为空");
        }
        ArrayList<String> positions = new ArrayList<>();   //木箱位置查重      (orgin)
        String matnrOne = "";//木箱相同位置 规格 matnr校验  1、左
        String matnrTwo = "";//木箱相同位置 规格 matnr校验  2、右
        ArrayList<String> boxNos = new ArrayList<>();   //木箱唯一编码查重  (batch)
        //判断matLists参数
        for (PalletizingCompleteParam.MatList matList:param.getMatLists()){
        for (PalletizingCompleteTwoFloorParam.MatList matList:param.getMatList()){
            if (Cools.isEmpty(matList.getMatnr())){
                throw new CoolException("参数:物料编码 matnr为空");
                throw new CoolException("参数:规格 matnr为空");
            }else if (Cools.isEmpty(matList.getPosition())){
                throw new CoolException("物料编码:"+matList.getMatnr()+"、参数:码垛位置 position为空");
            }else if (Cools.isEmpty(matList.getBoxNo())){
                throw new CoolException("物料编码:"+matList.getMatnr()+"、参数:木箱编号 boxNo为空");
            }else if (Cools.isEmpty(matList.getAnfme()) || matList.getAnfme().equals(0)){
                throw new CoolException("物料编码:"+matList.getMatnr()+"、参数:木箱中铜箔数量 anfme为空");
                throw new CoolException("规格:"+matList.getMatnr()+"、参数:码垛位置 position为空");
            }else if (Cools.isEmpty(matList.getBatch())){
                throw new CoolException("规格:"+matList.getMatnr()+"、参数:木箱编号 batch为空");
            }else if (Cools.isEmpty(matList.getModel())){
                throw new CoolException("规格:"+matList.getMatnr()+"、参数:卷号 model为空");
            }else if (Cools.isEmpty(matList.getBatch())){
                throw new CoolException("规格:"+matList.getMatnr()+"、参数:木箱编号 boxNo为空");
            }else if (Cools.isEmpty(matList.getWeight()) || matList.getWeight().equals(0D)){
                throw new CoolException("物料编码:"+matList.getMatnr()+"、参数:重量 weight为空");
                throw new CoolException("规格:"+matList.getMatnr()+"、参数:净重 weight为空");
            }else if (Cools.isEmpty(matList.getRoughWeight()) || matList.getRoughWeight().equals(0D)){
                throw new CoolException("规格:"+matList.getMatnr()+"、参数:毛重 roughWeight");
            }else if (Cools.isEmpty(matList.getRollExtent()) || matList.getRollExtent().equals(0D)){
                throw new CoolException("规格:"+matList.getMatnr()+"、参数:卷长度 rollExtent");
            }
            if (!positions.contains(matList.getPosition())){
                positions.add(matList.getPosition());
            if (matList.getPosition().equals("1")){//1、左  2、右
                if (!matnrOne.equals("")){
                    if (!matnrOne.equals(matList.getMatnr())){
                        throw new CoolException("木箱位置:"+matList.getPosition()+"存在不同规格卷信息");
                    }
                }else {
                    matnrOne=matList.getMatnr();
                }
            }else if (matList.getPosition().equals("2")){
                if (!matnrTwo.equals("")){
                    if (!matnrTwo.equals(matList.getMatnr())){
                        throw new CoolException("木箱位置:"+matList.getPosition()+"存在不同规格卷信息");
                    }
                }else {
                    matnrTwo=matList.getMatnr();
                }
            }else {
                throw new CoolException("参数:木箱编号 boxNo:"+matList.getBoxNo()+",木箱位置存在重复:"+matList.getPosition());
                throw new CoolException("参数:木箱编号 boxNo:"+matList.getBatch()+",木箱位置错误:"+matList.getPosition());
            }
            if (!boxNos.contains(matList.getBoxNo())){
                boxNos.add(matList.getBoxNo());
            if (!boxNos.contains(matList.getBatch())){
                boxNos.add(matList.getBatch());
            }else {
                throw new CoolException("参数:木箱编号 boxNo:"+matList.getBoxNo()+",木箱编码存在重复");
                throw new CoolException("参数:木箱编号 boxNo:"+matList.getBatch()+",木箱编码存在重复");
            }
        }
@@ -416,40 +495,51 @@
        String matnr = null;
        List<WaitPakin> waitPakins = new ArrayList<>();
        Date now = new Date();
        for (PalletizingCompleteParam.MatList matList:param.getMatLists()){
        for (PalletizingCompleteTwoFloorParam.MatList matList:param.getMatList()){
            Mat mat = matService.selectByMatnr(matList.getMatnr());
            if (Cools.isEmpty(mat)) {
                throw new CoolException(matList.getMatnr() + "商品档案不存在");
                mat = new Mat();
                mat.setMatnr(matList.getMatnr());
                mat.setMaktx(matList.getMatnr());
                mat.setTagId(tagService.getTop().getId());
                mat.setBrand(param.getBoxType());
                mat.setCreateBy(userId);
                mat.setCreateTime(now);
                mat.setUpdateBy(userId);
                mat.setUpdateTime(now);
                mat.setStatus(1);
                if (!matService.insert(mat)) {
                    throw new CoolException("规格添加失败,请联系管理员");
                }
            }
            matnr = matList.getMatnr();
            WaitPakin waitPakin = new WaitPakin();
            waitPakin.sync(mat);
            waitPakin.setModel(matList.getBatch());     //批次
            waitPakin.setSpecs(matList.getSpecs());     //规格
            waitPakin.setBatch(matList.getBoxNo());       //木箱编码
            waitPakin.setBatch(matList.getBatch());       //木箱编码  //批次  唯一值  箱号
            waitPakin.setModel(matList.getModel());       //卷号  唯一值
            waitPakin.setBrand(param.getBoxType());     //木箱类型
            waitPakin.setZpallet(param.getBarcode());   //托盘码
            waitPakin.setOrigin(matList.getPosition()); //木箱在托盘上的位置
            waitPakin.setWeight(matList.getWeight());  //净重
//            waitPakin.setRoughWeight(matList.getRoughWeight());  //毛重
//            waitPakin.setRollExtent(matList.getRollExtent());   //长度
            waitPakin.setIoStatus("Y");     // 入出状态
            waitPakin.setAnfme(matList.getAnfme().doubleValue());  // 木箱中铜箔数量
            waitPakin.setAnfme(matList.getAnfme());  // 数量
            waitPakin.setStatus("Y");    // 状态
            waitPakin.setAppeUser(userId);
            waitPakin.setAppeTime(now);
            waitPakin.setModiUser(userId);
            waitPakin.setModiTime(now);
            waitPakin.setZpallet(param.getBarcode());
            if (!waitPakinService.insert(waitPakin)) {
                throw new CoolException("保存入库通知档失败");
            }
            waitPakins.add(waitPakin);
        }
        LocTypeDto locTypeDto = new LocTypeDto();
        locTypeDto.setLocType1((short)1);
        StartupDto dto = commonService.getLocNo(1, 1, 145, matnr,null,null, locTypeDto);
        StartupDto dto = commonService.getLocNo(1, 1, 212, matnr,null,null, locTypeDto);
        int workNo = dto.getWorkNo();
        // 生成工作档
@@ -470,7 +560,6 @@
        wrkMast.setEmptyMk("N"); // 空板
        wrkMast.setLinkMis("Y");
        wrkMast.setCtnType(0); // 容器类型
        wrkMast.setBarcode(param.getBarcode());
        // 操作人员数据
        wrkMast.setAppeTime(now);
        wrkMast.setModiTime(now);
@@ -487,7 +576,6 @@
            wrkDetl.setAppeTime(now);
            wrkDetl.setModiTime(now);
            wrkDetl.setZpallet(param.getBarcode());
            wrkDetl.setRollUp(waitPakin.getRollUp());
            if (!wrkDetlService.insert(wrkDetl)) {
                throw new CoolException("保存工作明细失败");
            }
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -694,7 +694,7 @@
     * */
    @Override
    @Transactional
    public void palletizingComplete(PalletizingCompleteParam2 param) {
    public void PalletizingCompleteTwoFloorParam(PalletizingCompleteTwoFloorParam param) {
        Long userId = 7777L;//中控
        //判断param参数
        if (Cools.isEmpty(param.getBarcode())){
@@ -703,36 +703,57 @@
            throw new CoolException("参数:码垛位编号 palletizingNo为空");
        }else if (Cools.isEmpty(param.getBoxType())){
            throw new CoolException("参数:木箱类型 boxType为空");
        }else if (Cools.isEmpty(param.getMatLists()) || param.getMatLists().size()==0){
        }else if (Cools.isEmpty(param.getMatList()) || param.getMatList().size()==0){
            throw new CoolException("参数:物料明细 matLists为空");
        }
        ArrayList<String> positions = new ArrayList<>();   //木箱位置查重      (orgin)
        String matnrOne = "";//木箱相同位置 规格 matnr校验  1、左
        String matnrTwo = "";//木箱相同位置 规格 matnr校验  2、右
        ArrayList<String> boxNos = new ArrayList<>();   //木箱唯一编码查重  (batch)
        //判断matLists参数
        for (PalletizingCompleteParam2.MatList matList:param.getMatLists()){
        for (PalletizingCompleteTwoFloorParam.MatList matList:param.getMatList()){
            if (Cools.isEmpty(matList.getMatnr())){
                throw new CoolException("参数:物料编码 matnr为空");
                throw new CoolException("参数:规格 matnr为空");
            }else if (Cools.isEmpty(matList.getPosition())){
                throw new CoolException("物料编码:"+matList.getMatnr()+"、参数:码垛位置 position为空");
            }else if (Cools.isEmpty(matList.getBoxNo())){
                throw new CoolException("物料编码:"+matList.getMatnr()+"、参数:木箱编号 boxNo为空");
            }else if (Cools.isEmpty(matList.getAnfme()) || matList.getAnfme().equals(0)){
                throw new CoolException("物料编码:"+matList.getMatnr()+"、参数:木箱中铜箔数量 anfme为空");
                throw new CoolException("规格:"+matList.getMatnr()+"、参数:码垛位置 position为空");
            }else if (Cools.isEmpty(matList.getBatch())){
                throw new CoolException("规格:"+matList.getMatnr()+"、参数:木箱编号 batch为空");
            }else if (Cools.isEmpty(matList.getModel())){
                throw new CoolException("规格:"+matList.getMatnr()+"、参数:卷号 model为空");
            }else if (Cools.isEmpty(matList.getBatch())){
                throw new CoolException("规格:"+matList.getMatnr()+"、参数:木箱编号 boxNo为空");
            }else if (Cools.isEmpty(matList.getWeight()) || matList.getWeight().equals(0D)){
                throw new CoolException("物料编码:"+matList.getMatnr()+"、参数:重量 weight为空");
                throw new CoolException("规格:"+matList.getMatnr()+"、参数:净重 weight为空");
            }else if (Cools.isEmpty(matList.getRoughWeight()) || matList.getRoughWeight().equals(0D)){
                throw new CoolException("规格:"+matList.getMatnr()+"、参数:毛重 roughWeight");
            }else if (Cools.isEmpty(matList.getRollExtent()) || matList.getRollExtent().equals(0D)){
                throw new CoolException("规格:"+matList.getMatnr()+"、参数:卷长度 rollExtent");
            }
            if (!positions.contains(matList.getPosition())){
                positions.add(matList.getPosition());
            if (matList.getPosition().equals("1")){//1、左  2、右
                if (!matnrOne.equals("")){
                    if (!matnrOne.equals(matList.getMatnr())){
                        throw new CoolException("木箱位置:"+matList.getPosition()+"存在不同规格卷信息");
                    }
                }else {
                    matnrOne=matList.getMatnr();
                }
            }else if (matList.getPosition().equals("2")){
                if (!matnrTwo.equals("")){
                    if (!matnrTwo.equals(matList.getMatnr())){
                        throw new CoolException("木箱位置:"+matList.getPosition()+"存在不同规格卷信息");
                    }
                }else {
                    matnrTwo=matList.getMatnr();
                }
            }else {
                throw new CoolException("参数:木箱编号 boxNo:"+matList.getBoxNo()+",木箱位置存在重复:"+matList.getPosition());
                throw new CoolException("参数:木箱编号 boxNo:"+matList.getBatch()+",木箱位置错误:"+matList.getPosition());
            }
            if (!boxNos.contains(matList.getBoxNo())){
                boxNos.add(matList.getBoxNo());
            if (!boxNos.contains(matList.getBatch())){
                boxNos.add(matList.getBatch());
            }else {
                throw new CoolException("参数:木箱编号 boxNo:"+matList.getBoxNo()+",木箱编码存在重复");
                throw new CoolException("参数:木箱编号 boxNo:"+matList.getBatch()+",木箱编码存在重复");
            }
        }
@@ -759,37 +780,39 @@
        Date now = new Date();
        for (PalletizingCompleteParam2.MatList matList:param.getMatLists()){
            long rollUp = new Date().getTime();
        for (PalletizingCompleteTwoFloorParam.MatList matList:param.getMatList()){
            Mat mat = matService.selectByMatnr(matList.getMatnr());
            if (Cools.isEmpty(mat)) {
                throw new CoolException(matList.getMatnr() + "商品档案不存在");
                mat = new Mat();
                mat.setMatnr(matList.getMatnr());
                mat.setMaktx(matList.getMatnr());
                mat.setTagId(tagService.getTop().getId());
                mat.setCreateBy(userId);
                mat.setCreateTime(now);
                mat.setUpdateBy(userId);
                mat.setUpdateTime(now);
                mat.setStatus(1);
                if (!matService.insert(mat)) {
                    throw new CoolException("规格添加失败,请联系管理员");
                }
            }
            WaitPakin waitPakin = new WaitPakin();
            waitPakin.sync(mat);
            waitPakin.setModel(matList.getBatch());     //批次
            waitPakin.setSpecs(matList.getSpecs());     //规格
            waitPakin.setBatch(matList.getBoxNo());       //木箱编码
            waitPakin.setBatch(matList.getBatch());       //木箱编码  //批次  唯一值  箱号
            waitPakin.setModel(matList.getModel());       //卷号  唯一值
            waitPakin.setBrand(param.getBoxType());     //木箱类型
            waitPakin.setZpallet(param.getBarcode());   //托盘码
            waitPakin.setOrigin(matList.getPosition()); //木箱在托盘上的位置
            waitPakin.setWeight(matList.getWeight());  //净重
//            waitPakin.setRoughWeight(matList.getRoughWeight());  //毛重
//            waitPakin.setRollExtent(matList.getRollExtent());   //长度
            waitPakin.setIoStatus("N");     // 入出状态
            waitPakin.setAnfme(matList.getAnfme().doubleValue());  // 木箱中铜箔数量
            waitPakin.setAnfme(matList.getAnfme());  // 数量
            waitPakin.setStatus("Y");    // 状态
            waitPakin.setAppeUser(userId);
            waitPakin.setAppeTime(now);
            waitPakin.setModiUser(userId);
            waitPakin.setModiTime(now);
            waitPakin.setRollUp(rollUp);
            if (!Cools.isEmpty(matList.getMatDetlList())){
                for (PalletizingCompleteParam2.MatDetlList matDetlList:matList.getMatDetlList()){
                    LocDetlRullUpDetail locDetlRullUpDetail = new LocDetlRullUpDetail();
                    locDetlRullUpDetail.setUuid(rollUp);
                    locDetlRullUpDetail.setRollNo(matDetlList.getBoxNoDetl());
                    locDetlRullUpDetail.setRollWeight(matDetlList.getWeightDetl().toString());
                    locDetlRullUpDetailService.insert(locDetlRullUpDetail);
                }
            }
            if (!waitPakinService.insert(waitPakin)) {
                throw new CoolException("保存入库通知档失败");
            }
@@ -858,17 +881,17 @@
            }else if (Cools.isEmpty(matList.getBoxNo())){
                throw new CoolException("参数:木箱编号 boxNo为空");
            }
            List<WrkDetlSingle> wrkDetlSingles = wrkDetlSingleService.selectList(new EntityWrapper<WrkDetlSingle>().eq("batch", matList.getBoxNo()));
            WrkDetlSingle wrkDetlSingleOne = wrkDetlSingleService.selectOne(new EntityWrapper<WrkDetlSingle>().eq("batch", matList.getBoxNo()));
            List<WrkDetlSingle> wrkDetlSingles = wrkDetlSingleService.selectList(new EntityWrapper<WrkDetlSingle>()
                    .eq("wrk_no", wrkDetlSingleOne.getWrkNo()).eq("io_time", wrkDetlSingleOne.getIoTime()));
            boolean sign=true;
            for (WrkDetlSingle wrkDetlSingle:wrkDetlSingles){
                if (wrkDetlSingle.getBatch().equals(matList.getBoxNo())){//木箱编码
                    WrkDetl wrkDetl = new WrkDetl();
                    wrkDetl.sync(wrkDetlSingle);
                    wrkDetlsNew.add(wrkDetl);
                    wrkDetlsOld.add(wrkDetlSingle);
                    sign=false;
                    break;
                }
                WrkDetl wrkDetl = new WrkDetl();
                wrkDetl.sync(wrkDetlSingle);
                wrkDetlsNew.add(wrkDetl);
                wrkDetlsOld.add(wrkDetlSingle);
                sign=false;
                break;
            }
            if (sign){
                throw new CoolException("参数:木箱编号 boxNo未查询到对应的工作明细!");
@@ -922,69 +945,20 @@
    @Override
    @Transactional
    public void singleMountUnstackingComplete(SingleMountUnstackingCompleteParam param) {
        Long userId = 8888L;//桁架上位软件
//        Long userId = 8888L;//桁架上位软件
        //判断param参数
        if (Cools.isEmpty(param.getBarcode())){
            throw new CoolException("参数:托盘码 barcode为空");
        }
//        else if (Cools.isEmpty(param.getPalletizingNo())){
//            throw new CoolException("参数:码垛位编号 palletizingNo为空");
//        }
        WrkMast wrkMastMatrix = wrkMastService.selectByBarcode(param.getBarcode());
        if (Cools.isEmpty(wrkMastMatrix)){
            throw new CoolException("参数:托盘码查询工作档失败:"+param.getBarcode());
        }else {
//            if (wrkMastMatrix.getIoType().equals(103)){
//                List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNoUnstacking(wrkMastMatrix.getWrkNo());
//                if (Cools.isEmpty(param.getMatLists()) || param.getMatLists().size()==0 || param.getMatLists().size()!=wrkDetls.size()){
//                    throw new CoolException("返回物料明细数为"+param.getMatLists().size()+",托盘码:"+param.getBarcode()+"应剩余物料数:"+wrkDetls.size());
//                }
//
//                ArrayList<String> orgin = new ArrayList<>();
//                //判断matLists参数
//                for (SingleMountUnstackingCompleteParam.MatList matList : param.getMatLists()){
//                    if (Cools.isEmpty(matList.getPosition())){
//                        throw new CoolException("参数:码垛位置 position为空");
//                    }else if (Cools.isEmpty(matList.getBoxNo())){
//                        throw new CoolException("参数:木箱编号 boxNo为空");
//                    }
//                    if (!orgin.contains(matList.getPosition())){
//                        orgin.add(matList.getPosition());
//                    }else {
//                        throw new CoolException("参数:木箱编号 boxNo:"+matList.getBoxNo()+",木箱位置存在重复");
//                    }
//                    boolean sign=true;
//                    for (WrkDetl wrkDetl:wrkDetls){
//                        if (wrkDetl.getBatch().equals(matList.getBoxNo())){//木箱编码
//                            wrkDetl.setOrigin(matList.getPosition());
//                            wrkDetlService.update(wrkDetl,new EntityWrapper<WrkDetl>().eq("batch",wrkDetl.getBatch()));
//                            sign=false;
//                            break;
//                        }
//                    }
//                    if (sign){
//                        throw new CoolException("参数:木箱编号 boxNo:"+matList.getBoxNo()+"未查询到对应的工作明细!");
//                    }
//                }
//            }
        }
        wrkMastMatrix.setSheetNo("2");
        if (!wrkMastService.updateById(wrkMastMatrix)){
            throw new CoolException("更新工作档失败==》桁架上位软件:单托拆垛完成通知");
        }
    }
    /*
     *
     * */
    @Override
    @Transactional
    public void cs1(String barcode) {
        BasDevp basDevp = basDevpService.selectById(216);
        basDevp.setWrkNo(9992);
        basDevp.setBarcode(barcode);
        basDevpService.updateById(basDevp);
    }
    /*
@@ -1063,24 +1037,6 @@
            return crnStn-2;
        }
        return crnStn;
    }
        /*
     *
     * */
    @Override
    @Transactional
    public void cs3() {
        //拆盘
//        WrkMastSta wrkMastSta1 = new WrkMastSta(new Date(),119);
//        wrkMastSta1.setType(2);
//        wrkMastSta1.setWrkType(2);
//        wrkMastStaService.insert(wrkMastSta1);
//        WrkMastSta wrkMastSta2 = new WrkMastSta(new Date(),121);
//        wrkMastSta2.setType(2);
//        wrkMastSta2.setWrkType(2);
//        wrkMastStaService.insert(wrkMastSta2);
    }
    /*...........................上饶江铜..............以上.............徐工汉云...........................*/
src/main/java/com/zy/asrs/task/BarcodeUploadScheduler.java
@@ -16,7 +16,7 @@
    @Autowired
    private BarcodeUploadHandler barcodeUploadHandler;
    @Scheduled(cron = "0/3 * * * * ? ")
//    @Scheduled(cron = "0/3 * * * * ? ")
    private void execute(){//条码上传中控
        int[] staNos =new int[]{215,219};
        for (int staNo : staNos){
src/main/java/com/zy/asrs/task/LocMoveAllScheduler.java
@@ -21,7 +21,7 @@
import java.util.List;
/**
 * Created by vincent on 2020/7/7
 * Created by vincent on 2020/7/7  //跑酷测试  生成移库
 */
@Slf4j
@Component
@@ -41,7 +41,7 @@
    @Autowired
    private SlaveProperties slaveProperties;
    @Scheduled(cron = "0/3 * * * * ? ")
//    @Scheduled(cron = "0/3 * * * * ? ")
    private void execute(){
        if (!moveAll) return;
src/main/java/com/zy/asrs/task/RailwayPlatformScheduler.java
@@ -8,7 +8,7 @@
/**
 * Created by Monkey D. Luffy on 2023.09.17
 * 徐工汉云..............以下.............上饶江铜.............自动补空板
 * 徐工汉云..............以下.............上饶江铜.............上报月台
 */
@Component
public class RailwayPlatformScheduler {
@@ -16,7 +16,7 @@
    @Autowired
    private RailwayPlatformHandler railwayPlatformHandler;
    @Scheduled(cron = "0/3 * * * * ? ")
//    @Scheduled(cron = "0/3 * * * * ? ")
    private void execute(){//上报月台
        int[] staNos =new int[]{144};
        for (int staNo : staNos){
src/main/java/com/zy/asrs/task/handler/BareBoardHandler.java
@@ -65,6 +65,10 @@
            crns.add(6);
            boolean sign = true;
            for (Integer crnNo : crns){
                BasCrnp basCrnp = basCrnpService.selectById(crnNo);
                if (basCrnp.getCrnSts()!=3 || !basCrnp.getOutEnable().equals("Y")){
                    continue;
                }
                sign = true;
                // 获取库位
                LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts","D").eq("crn_no",crnNo));
src/main/java/com/zy/asrs/task/handler/OneLouHangJiaHandler.java
@@ -75,7 +75,7 @@
                return FAIL;
            }
            List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
            if (Cools.isEmpty(wrkDetls) || wrkDetls.size()!=1){
            if (Cools.isEmpty(wrkDetls) || wrkDetls.size()==0){
                return FAIL;
            }
            WrkDetl wrkDetl = wrkDetls.get(0);
src/main/java/com/zy/asrs/task/handler/ReportToDismantleTheStackHandler.java
@@ -18,6 +18,8 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
@@ -49,6 +51,7 @@
    public ReturnT<String> start(int staNo) {
        try {
            Date now = new Date();
            BasDevp basDevp = basDevpService.selectById(staNo);
            Integer staOther = getStaOther(staNo);
            Integer staEnd = getStaEnd(staNo);
@@ -76,7 +79,22 @@
                if (Cools.isEmpty(wrkDetls) || wrkDetls.size()==0){
                    return FAIL;
                }
                SingleMountUnstackingCompleteParam singleMountUnstackingCompleteParam = new SingleMountUnstackingCompleteParam(wrkMast,wrkDetls);
                List<WrkDetl> wrkDetlList = new ArrayList<>();
                String signOne = "";
                String signTwo = "";
                for (WrkDetl wrkDetl:wrkDetls){
                    if (wrkDetl.getOrigin().equals("1") && signOne.equals("")){
                        wrkDetlList.add(wrkDetl);
                        signOne = "1";
                    } else if (wrkDetl.getOrigin().equals("2") && signTwo.equals("")){
                        wrkDetlList.add(wrkDetl);
                        signTwo = "2";
                    }
                    if (!signOne.equals("") && !signTwo.equals("")){
                        break;
                    }
                }
                SingleMountUnstackingCompleteParam singleMountUnstackingCompleteParam = new SingleMountUnstackingCompleteParam(wrkMast,wrkDetlList);
                singleMountUnstackingCompleteParam.setStaStart(staNo);
                singleMountUnstackingCompleteParam.setStaEnd(staEnd);
                ReturnT<String> result = null;
@@ -101,10 +119,18 @@
//                    return SUCCESS;
//                }
                if (result.getCode()==200){
                    Date nowOne = new Date();
                    Date nowTwo = now;
                    for (WrkDetl wrkDetl:wrkDetls){
                        if (wrkDetl.getOrigin().equals("1")){
                            now = nowOne;
                        } else if (wrkDetl.getOrigin().equals("2")){
                            now = nowTwo;
                        }
                        WrkDetlSingle wrkDetlSingle = new WrkDetlSingle();
                        wrkDetlSingle.sync(wrkDetl);
                        wrkDetlSingle.setWrkNo(wrkDetl.getWrkNo().longValue());
                        wrkDetlSingle.setIoTime(now);
                        wrkDetlSingleService.insert(wrkDetlSingle);
                    }
                    wrkMast.setSheetNo("1");
src/main/resources/mapper/WrkMastMapper.xml
@@ -69,7 +69,7 @@
    <select id="selectToBeHistoryData" resultMap="BaseResultMap">
        select * from asr_wrk_mast
        where wrk_sts=5
        or wrk_sts=44 or wrk_sts=57
        or wrk_sts=44 or wrk_sts=57 or wrk_sts=64
        or (wrk_sts=15 and ove_mk='Y' and wrk_no not in (select wrk_no from asr_bas_devp))
        or (wrk_sts=15 and dateadd(mi,15,crn_end_time) &lt;= getdate() and wrk_no not in (select wrk_no from asr_bas_devp))
        or (wrk_sts=15 and crn_end_time is null and wrk_no not in (select wrk_no from asr_bas_devp))
src/main/webapp/static/js/saas/locDetl.js
@@ -23,7 +23,8 @@
        ,{field: 'itemNum', align: 'center',title: '品项数', hide: true}
        ,{field: 'safeQty', align: 'center',title: '安全库存量', hide: true}
        ,{field: 'weight', align: 'center',title: '单箱净重', hide: true}
        ,{field: 'length', align: 'center',title: '单箱毛重', hide: true}
        ,{field: 'roughWeight', align: 'center',title: '单箱毛重', hide: true}
        // ,{field: 'length', align: 'center',title: '单箱毛重', hide: true}
        ,{field: 'volume', align: 'center',title: '单箱体积', hide: true}
        ,{field: 'threeCode', align: 'center',title: '箱子尺寸', hide: true}
        ,{field: 'supp', align: 'center',title: '供应商', hide: true}