自动化立体仓库 - WMS系统
Junjie
2023-10-31 e6ed9e8a9f24683e8ea4e9fc2c82b1d4e24bb00a
Merge remote-tracking branch 'origin/tzskasrs' into tzskasrs
14个文件已修改
178 ■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/AgvLocMastController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/ManLocDetlController.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/ManPakOutController.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/MobileController.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/ManPakOut.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/LocDetlAdjustParam.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/ManPakOutService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/AgvLocMastServiceImpl.java 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/ManPakOutServiceImpl.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/agvPakStore/stockAdjust.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/mat/mat.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/AgvLocMastController.java
@@ -101,7 +101,7 @@
    @ManagerAuth(memo = "初始化库位")
    public R init(LocMastInitParam param) {
        //清空原有库位
        agvLockMastService.clearLoc();
        //agvLockMastService.clearLoc();
        //初始化一楼站点
        //agvLockMastService.initLocFloor1();
        //初始化三楼站点
src/main/java/com/zy/asrs/controller/ManLocDetlController.java
@@ -93,6 +93,16 @@
        Page<ManLocDetl> all = manLocDetlService.selectAllPage(manLocDetlPage);
        return R.ok().add(all);
    }
    /*
   平库移库
    */
    @RequestMapping("/node/move/start")
    public R nodeMoveStart(@RequestParam String sourceLocNo, @RequestParam String targetLocNo){
        manLocDetlService.updateLocNo(targetLocNo,sourceLocNo);
        return R.ok();
    }
    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());
@@ -109,8 +119,5 @@
            }
        }
    }
}
src/main/java/com/zy/asrs/controller/ManPakOutController.java
@@ -440,4 +440,12 @@
        response.getOutputStream().close();
        return R.ok();
    }
    /*
    平库库区拣料信息 根据库位获取拣料信息,并且根绝库位做排序
     */
    @RequestMapping("/node/order/pakout")
    public R nodeOrderPakout(@RequestParam String locType){
        return R.ok(manPakOutService.pakoutByLocType(locType));
    }
}
src/main/java/com/zy/asrs/controller/MobileController.java
@@ -422,24 +422,4 @@
        return R.ok().add(waitPakins);
    }
    /*
    平库移库
     */
    @RequestMapping("/node/move/start")
    public R nodeMoveStart(@RequestParam String sourceLocNo, @RequestParam String targetLocNo){
        return R.ok();
    }
    /*
    平库库区拣料信息
     */
    @RequestMapping("/node/order/pakout")
    public R nodeOrderPakout(@RequestParam String locType){
        return R.ok();
    }
}
src/main/java/com/zy/asrs/entity/ManPakOut.java
@@ -276,5 +276,12 @@
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
    }
    public ManPakOut(){
    }
    public ManPakOut(String locNo){
        this.setLocNo(locNo);
    }
}
src/main/java/com/zy/asrs/entity/param/LocDetlAdjustParam.java
@@ -36,12 +36,16 @@
        //销售订单行号
        private String deadTime;
        public LocDetlAdjust(String matnr, String batch, Double count, String threeCode, String deadTime) {
        //料箱码
        private String suppCode;
        public LocDetlAdjust(String matnr, String batch, Double count, String threeCode, String deadTime, String suppCode) {
            this.matnr = matnr;
            this.batch = batch;
            this.count = count;
            this.threeCode = threeCode;
            this.deadTime = deadTime;
            this.suppCode = suppCode;
        }
    }
@@ -60,7 +64,7 @@
                }
            }
            if (!exit) {
                copyList.add(new LocDetlAdjustParam.LocDetlAdjust(adjust.getMatnr(), adjust.getBatch(), adjust.getCount(), adjust.getThreeCode(), adjust.getDeadTime()));
                copyList.add(new LocDetlAdjustParam.LocDetlAdjust(adjust.getMatnr(), adjust.getBatch(), adjust.getCount(), adjust.getThreeCode(), adjust.getDeadTime(),adjust.getSuppCode()));
            }
        }
        list = copyList;
src/main/java/com/zy/asrs/service/ManPakOutService.java
@@ -3,9 +3,15 @@
import com.baomidou.mybatisplus.service.IService;
import com.zy.asrs.entity.ManPakOut;
import java.util.List;
public interface ManPakOutService extends IService<ManPakOut> {
    void updateAllStatus(String orderNo,int status);
    ManPakOut selectByOrderWithName(String orderNo);
    List<ManPakOut> selectByLocType(String locType);
    List<ManPakOut> pakoutByLocType(String locType);
}
src/main/java/com/zy/asrs/service/impl/AgvLocMastServiceImpl.java
@@ -34,19 +34,19 @@
    public void initLocFloor3() {
        //3楼 1-33排 1-14列 8层 ------>  1-33排 1-17列 8层
        this.insertBatch(getLocMastList(1, 33, 1, 17, 1, 8, 3));
//        this.insertBatch(getLocMastList(1, 33, 1, 17, 1, 8, 3));
//
//        //3楼 1-27排 15-34列 8层 ------>  1-26排 18-25列 8层
//        this.insertBatch(getLocMastList(1, 27, 18, 25, 1, 8, 3));
//
//        //3楼 1-25排 35-46列 8层 ------>  1-25排 26-35列 8层
//        this.insertBatch(getLocMastList(1, 25, 26, 35, 1, 8, 3));
//
//        //3楼 3-25排 47-60列 8层 ------>  1-23排 36-70列 8层
//        this.insertBatch(getLocMastList(1, 23, 36, 70, 1, 8, 3));
        //3楼 1-27排 15-34列 8层 ------>  1-26排 18-25列 8层
        this.insertBatch(getLocMastList(1, 27, 18, 25, 1, 8, 3));
        //3楼 1-25排 35-46列 8层 ------>  1-25排 26-35列 8层
        this.insertBatch(getLocMastList(1, 25, 26, 35, 1, 8, 3));
        //3楼 3-25排 47-60列 8层 ------>  1-23排 36-70列 8层
        this.insertBatch(getLocMastList(1, 23, 36, 70, 1, 8, 3));
        //3楼 4-25排 61-70列 8层
        //this.insertBatch(getLocMastList(4, 25, 61, 70, 1, 8, 3));
        //3楼 3-23排 71-72列 8层
        this.insertBatch(getLocMastList(3, 23, 71, 72, 1, 8, 3));
    }
src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
@@ -18,6 +18,7 @@
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
 * 移动端服务核心类
@@ -229,7 +230,10 @@
    public List<AgvBasDevp> getAgvBasDevpByFloor(int floor) {
        EntityWrapper<AgvBasDevp> wrapper = new EntityWrapper<>();
        wrapper.eq("floor",floor).eq("cache_shelves","Y").eq("loc_sts","F");
        return agvBasDevpService.selectList(wrapper);
        List<AgvBasDevp> agvBasDevpList = agvBasDevpService.selectList(wrapper);
        return agvBasDevpList.stream().filter(agvBasDevp -> {
            return !Cools.isEmpty(agvWaitPakinService.selectByContainerCode(agvBasDevp.getBarcode()));
        }).collect(Collectors.toList());
    }
}
src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
@@ -402,6 +402,7 @@
            locDetl.setAppeTime(now);
            locDetl.setThreeCode(adjust.getThreeCode());
            locDetl.setDeadTime(adjust.getDeadTime());
            locDetl.setSuppCode(adjust.getSuppCode());
            if (!agvLocDetlService.insert(locDetl)) {
                throw new CoolException("添加" + locDetl.getLocNo() + "库位," + locDetl.getMatnr() + "商品," + locDetl.getBatch() + "序列码库存明细失败");
            }
src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java
@@ -162,7 +162,9 @@
            agvTaskParam.setTaskPriority(agvWrkMast.getIoPri().intValue());
            //AgvTaskkDescribeParam
            agvTaskkDescribeParam.setFromLocationCode(agvWrkMast.getSourceLocNo());
            if(agvWrkMast.getSourceLocNo().contains("C")){
                agvTaskkDescribeParam.setFromLocationCode(agvWrkMast.getSourceLocNo());
            }
            agvTaskkDescribeParam.setToLocationCode(agvWrkMast.getLocNo());
            agvTaskkDescribeParam.setContainerCode(agvWrkMast.getBarcode());
            return agvTaskParam;
src/main/java/com/zy/asrs/service/impl/ManPakOutServiceImpl.java
@@ -1,10 +1,14 @@
package com.zy.asrs.service.impl;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.zy.asrs.entity.ManPakOut;
import com.zy.asrs.mapper.ManPakOutMapper;
import com.zy.asrs.service.ManPakOutService;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
@Service("manPakOutService")
public class ManPakOutServiceImpl extends ServiceImpl<ManPakOutMapper, ManPakOut> implements ManPakOutService {
@@ -18,4 +22,75 @@
    public ManPakOut selectByOrderWithName(String orderNo) {
        return this.baseMapper.selectByOrderWithName(orderNo);
    }
    @Override
    public List<ManPakOut> selectByLocType(String locType) {
        return this.selectList(new EntityWrapper<ManPakOut>().like("loc_no",locType).eq("status",1));
    }
    @Override
    public List<ManPakOut> pakoutByLocType(String locType) {
        List<ManPakOut> manPakOuts = this.selectByLocType(locType);
        manPakOuts.sort((m1,m2) -> {
            //取库位编码最后6位得到排列层
            String locNo1 = m1.getLocNo().substring(m1.getLocNo().length()-6);
            String locNo2 = m2.getLocNo().substring(m2.getLocNo().length()-6);
            int row1 = Integer.parseInt(locNo1.substring(0, 2));
            int row2 = Integer.parseInt(locNo2.substring(0, 2));
            int bay1 = Integer.parseInt(locNo1.substring(2,4));
            int bay2 = Integer.parseInt(locNo2.substring(2,4));
            //每两排为一个起点,根据列来由近到远排序
            if((row1 + 1)/2 != (row2+1)/2){
                return row1 - row2;
            }else {
                return bay1 - bay2;
            }
        });
        return manPakOuts;
    }
    public static void main(String[] args) {
        String str = "DT-13C-010203";
        System.out.println(str.substring(str.length()-6));
        List<ManPakOut> list = new ArrayList<>();
        list.add(new ManPakOut("DT-C-010403"));
        list.add(new ManPakOut("DT-C-050203"));
        list.add(new ManPakOut("DT-C-040503"));
        list.add(new ManPakOut("DT-C-030203"));
        list.add(new ManPakOut("DT-C-010503"));
        list.add(new ManPakOut("DT-C-020103"));
        list.add(new ManPakOut("DT-C-020203"));
        list.add(new ManPakOut("DT-C-040103"));
        //Collections.sort(list);
        list.sort((m1,m2) ->{
            //取库位编码最后6位得到排列层
            String locNo1 = m1.getLocNo().substring(m1.getLocNo().length()-6);
            String locNo2 = m2.getLocNo().substring(m2.getLocNo().length()-6);
            int row1 = Integer.parseInt(locNo1.substring(0, 2));
            int row2 = Integer.parseInt(locNo2.substring(0, 2));
            int bay1 = Integer.parseInt(locNo1.substring(2,4));
            int bay2 = Integer.parseInt(locNo2.substring(2,4));
            if((row1 + 1)/2 != (row2+1)/2){
                return row1 - row2;
            }else {
                return bay1 - bay2;
            }
        });
        list.forEach(manPakOut -> {
            System.out.println(manPakOut);
        });
    }
}
src/main/webapp/static/js/agvPakStore/stockAdjust.js
@@ -10,7 +10,7 @@
        ,{field: 'batch', align: 'center',title: '序列码', edit: true, style: 'font-weight:bold'}
        ,{field: 'threeCode', align: 'center',title: '销售订单号', edit: true, style: 'font-weight:bold'}
        ,{field: 'deadTime', align: 'center',title: '销售订单行号', edit: true, style: 'font-weight:bold'}
        ,{field: 'suppCode', align: 'center',title: '料箱码', edit: false, style: 'font-weight:bold'}
        ,{field: 'suppCode', align: 'center',title: '料箱码', edit: true, style: 'font-weight:bold'}
    ];
    arrRemove(detlCols, "field", "zpallet");
    arrRemove(detlCols, "field", "anfme");
src/main/webapp/views/mat/mat.html
@@ -147,7 +147,7 @@
</script>
<script type="text/html" id="operate">
    <a class="layui-btn layui-btn-xs btn-edit layui-btn-primary" lay-event="edit">修改</a>
    <a class="layui-btn layui-btn-xs btn-edit layui-btn-primary btn-modify" lay-event="edit" style="display: none">修改</a>
    <button class="layui-btn layui-btn-xs btn-print" lay-event="btnPrint">打印</button>
</script>