自动化立体仓库 - WMS系统
#
lsh
2024-01-18 eb17d664dd8c1957e2ca6668ac70b3d49dca7329
#
6个文件已修改
172 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/MobileController.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/TrussCombParam.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/image/logo.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/index.html 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/login.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/MobileController.java
@@ -71,6 +71,13 @@
        return R.ok("下架成功");
    }
    @RequestMapping("/search/sign/auth/v2")
//    @ManagerAuth(memo = "拆叠盘模式切换")
    public R orderSearchByBarcodeV2(@RequestParam boolean sign){
        Integer signRu = 1;
        return R.ok(signRu);
    }
    // 组托 ----------------------------------------------------------------------------------------------------
@@ -144,6 +151,57 @@
        return R.ok().add(combParams);
    }
    @RequestMapping("/order/search/orderNo/auth/v2")
    @ManagerAuth(memo = "退库单获取")
    public R orderSearchByBarcodeV2(@RequestParam String orderNo){
        if (Cools.isEmpty(orderNo)){
            orderNo=null;
        }
        List<Order> orders = orderService.selectorderNoL(orderNo);
        if (Cools.isEmpty(orders)){
            return R.ok();
        }
        LinkedList<CombParam> combParams = new LinkedList<>();
        if (!Cools.isEmpty(orders)){
            for (Order order:orders){
                CombParam combParam=new CombParam();
                if (order == null) {
                    continue;
                }
                DocType docType = docTypeService.selectById(order.getDocType());
                if (docType.getPakin() == null || docType.getPakin() != 1 || !docType.getDocName().equals("退货入库单")) {
                    continue;
                }
                if (order.getSettle() > 2) {
                    continue;
                }
                List<OrderDetl> orderDetls = orderService.selectWorkingDetls(order.getId());
                if (!Cools.isEmpty(orderDetls)) {
                    LinkedList<CombParam.CombMat> combMats = new LinkedList<>();
                    for (OrderDetl orderDetl:orderDetls){
                        if (orderDetl.getWorkQty()!=0){
                            continue;
                        }
                        CombParam.CombMat combMat = new CombParam.CombMat();
                        combMat.setMatnr(orderDetl.getMatnr());
                        combMat.setBatch(orderDetl.getBatch());
                        combMat.setAnfme(orderDetl.getAnfme()-orderDetl.getWorkQty());
                        combMat.setMaktx(orderDetl.getMaktx());
                        combMat.setSpecs(orderDetl.getSpecs());
                        combMats.add(combMat);
                    }
                    if (combMats.size()==0){
                        continue;
                    }
                    combParam.setCombMats(combMats);
                }
                combParam.setOrderNo(order.getOrderNo());
                combParams.add(combParam);
            }
        }
        return R.ok().add(combParams);
    }
    @RequestMapping("/wrkDetl/search/batch/auth")
    @ManagerAuth(memo = "出库确认获取信息")
    public R wrkDetlSearchByBatch(@RequestBody String batch){
src/main/java/com/zy/asrs/entity/param/TrussCombParam.java
@@ -20,17 +20,17 @@
public class TrussCombParam {
    private String barcode;//        字符串    托盘码    订单共用                        //上传
    private Integer souSta;//        字符串    托盘码    订单共用
    private Integer souSta;//        字符串    原站点    订单共用
    private Integer palletizingNo;//    是    字符串    码垛位编号
    private Integer staStart;//    是    字符串    码垛位编号
    private Integer palletizingNo2;//    是    字符串    目标码垛位编号    订单共用         //上传
    private Integer palletizingNo2;//    是    字符串    目标码垛位编号    订单共用         //上传                 //PDA
    private Integer staEnd;//    是    字符串    目标码垛位编号    订单共用                 //上传
    private String boxType;//    是    字符串    木箱类型  brand                         //上传
    private String boxType;//    是    字符串    木箱类型  brand                         //上传                 //PDA
    private String uuid;//        字符串    时间戳                                      //上传
    private String createTime;//        字符串    创建时间
    private String orderNo;//        字符串    订单号                                  //上传
    private String orderNo;//        字符串    订单号                                  //上传                 //PDA
    private List<MatList> matList;//        是    列表    拆垛货物信息(2箱,尾箱可能1箱)    //上传
    private List<MatList> matList;//        是    列表    拆垛货物信息(2箱,尾箱可能1箱)    //上传                 //PDA
    @Data
    public static class MatList{
@@ -40,9 +40,10 @@
        private String position;//    是    字符串    木箱位置(拆垛时需要) origin             //上传
        private Double weight;//    是    小数型    重量                                   //上传
        private Integer anfme;//        数字型    木箱中铜箔数量                          //上传
        private String batch;//        字符串    箱号
        private String batch;//        字符串    箱号                                                               //PDA
        private String specs;//        字符串    规格
        private String standby4;//        卷信息Id                                   //上传
        private String model;//        字符串    规格
//        private String standby4;//        卷信息Id                                   //上传
        private List<MatDetlList> matDetlList;//        是    列表    木箱中铜箔信息
    }
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -83,6 +83,8 @@
    private ManLocDetlMapper manLocDetlMapper;
    @Autowired
    private DocTypeService docTypeService;
    @Autowired
    private LocDetlRullUpDetailService locDetlRullUpDetailService;
    @Override
@@ -96,81 +98,53 @@
                throw new CoolException("参数:托盘码为空");
            }
        }
        param.setPalletizingNo(147);
        //判断param参数
        if (Cools.isEmpty(param.getPalletizingNo())){
            throw new CoolException("参数:站点编号为空");
        }else if (Cools.isEmpty(param.getOrderNo())){
            throw new CoolException("参数:退货单单号 orderNo为空");
        }else if (Cools.isEmpty(param.getMatList()) || param.getMatList().size() != 1){
            throw new CoolException("参数:物料明细 matLists为空");
        }else if (param.getSouSta()==145 || param.getMatList().size() != 1){
            throw new CoolException("参数:原站点编号为空");
        }else if (param.getSouSta()==145 && param.getMatList().size() != 1){
            throw new CoolException("参数:物料明细 matLists为空  或者  大于1个明细");
        }else if (Cools.isEmpty(param.getMatList()) || param.getMatList().size() > 2){
            throw new CoolException("参数:物料明细 matLists为空  或者  大于2个明细");
        }
        Order order = orderService.selectByNo(param.getOrderNo());
        if (Cools.isEmpty(order)){
            throw new CoolException("未查询到此订单,单号:"+param.getOrderNo());
        }
        DocType docType = docTypeService.selectById(order.getDocType());
        if (Cools.isEmpty(docType) || !docType.getDocName().equals("退货入库单")){
            throw new CoolException("单号:"+param.getOrderNo()+"不是退货入库单");
        }
        List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
        if (Cools.isEmpty(orderDetls) || orderDetls.size()==0){
            throw new CoolException("未查询到此订单明细,单号:"+param.getOrderNo());
        }
        List<String> orderBoxNoList = new ArrayList<>();
        for (OrderDetl orderDetl: orderDetls){
            if (orderDetl.getWorkQty()==0){
                orderBoxNoList.add(orderDetl.getBatch());
            }
        }
        if (orderBoxNoList.size()==0 || orderBoxNoList.size()<param.getMatList().size()){
            throw new CoolException("单号:"+param.getOrderNo()+" 退货数量大于明细数量");
        }
        List<String> matListBoxNoList = new ArrayList<>();
        for (TrussCombParam.MatList matList: param.getMatList()){
            if (!orderBoxNoList.contains(matList.getBoxNo())){
                throw new CoolException("单号:"+param.getOrderNo()+" 箱号:"+matList.getBatch()+"不属于此订单或者已经入库");
            }else {
                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<>();
        for (OrderDetl orderDetl:orderDetlList){
            Mat mat = matService.selectByMatnr(orderDetl.getMatnr());
        for (TrussCombParam.MatList matList:param.getMatList()){
            long rollUp = new Date().getTime();
            Mat mat = matService.selectByMatnr(matList.getMatnr());
            if (Cools.isEmpty(mat)) {
                throw new CoolException(orderDetl.getMatnr() + "商品档案不存在");
                throw new CoolException(matList.getMatnr() + "商品档案不存在");
            }
            matnr = mat.getMatnr();
            WaitPakin waitPakin = new WaitPakin();
            waitPakin.sync(mat);
            waitPakin.setModel(orderDetl.getModel());     //批次
            waitPakin.setSpecs(orderDetl.getSpecs());     //规格
            waitPakin.setBatch(orderDetl.getBatch());       //木箱编码
            waitPakin.setModel(matList.getModel());     //批次
            waitPakin.setSpecs(matList.getSpecs());     //规格
            waitPakin.setBatch(matList.getBatch());       //木箱编码
            waitPakin.setBrand(param.getBoxType());     //木箱类型
            waitPakin.setZpallet(param.getBarcode());   //托盘码
            waitPakin.setOrigin(orderDetl.getOrigin()); //木箱在托盘上的位置
            waitPakin.setOrigin(matList.getPosition()); //木箱在托盘上的位置
            waitPakin.setIoStatus("N");     // 入出状态
            waitPakin.setAnfme(orderDetl.getAnfme());  // 木箱中铜箔数量
            waitPakin.setAnfme((double)matList.getAnfme());  // 木箱中铜箔数量
            waitPakin.setStatus("Y");    // 状态
            waitPakin.setAppeUser(userId);
            waitPakin.setAppeTime(now);
            waitPakin.setModiUser(userId);
            waitPakin.setModiTime(now);
            waitPakin.setRollUp(orderDetl.getRollUp());
            waitPakin.setRollUp(rollUp);
            if (!Cools.isEmpty(matList.getMatDetlList())){
                for (TrussCombParam.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("保存入库通知档失败");
            }
@@ -240,6 +214,7 @@
    public void trussCombOrder(TrussCombParam param, Long userId) {
        Date now = new Date();
        param.setBarcode(String.valueOf(now.getTime()));
        param.setPalletizingNo(147);
        //判断param参数
        if (Cools.isEmpty(param.getPalletizingNo())){
@@ -274,7 +249,7 @@
        }
        List<String> matListBoxNoList = new ArrayList<>();
        for (TrussCombParam.MatList matList: param.getMatList()){
            if (!orderBoxNoList.contains(matList.getBoxNo())){
            if (!orderBoxNoList.contains(matList.getBatch())){
                throw new CoolException("单号:"+param.getOrderNo()+" 箱号:"+matList.getBatch()+"不属于此订单或者已经入库");
            }else {
                matListBoxNoList.add(matList.getBoxNo());
src/main/webapp/static/image/logo.png

src/main/webapp/views/index.html
@@ -2,7 +2,7 @@
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>中扬 - 自动化立体仓库 - AS / RS</title>
  <title>徐工汉云 - 自动化立体仓库 - AS / RS</title>
  <meta name="renderer" content="webkit">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
@@ -26,10 +26,10 @@
  <!-- 头部 -->
  <div class="layui-header">
    <div class="layui-logo">
      <img src="../static/image/logo.png" style="display: inline-block; width: 40%;height: auto">
<!--      <img src="../static/image/logo.png" style="display: inline-block; width: 40%;height: auto">-->
      <!--          <span style="margin-top: 0; letter-spacing: 10px">中扬立库</span>-->
      <!--          <img src="../static/image/logo.svg"/>-->
      <!--          <cite>中扬 - Zoneyung</cite>-->
                <img src="../static/image/favicon.ico"/>
                <cite>徐工汉云</cite>
    </div>
    <ul class="layui-nav layui-layout-left">
@@ -75,7 +75,7 @@
  <div class="layui-body"></div>
  <!-- 底部 -->
  <div class="layui-footer layui-text">
    copyright © 2022 <a href="https://zoneyung.com/" target="_blank">浙江中扬立库有限公司</a> all rights reserved.
    copyright © 2022 <a href="https://zoneyung.com/" target="_blank">徐工汉云</a> all rights reserved.
    <span class="pull-right">Version 1.0.0</span>
  </div>
@@ -91,7 +91,7 @@
<script type="text/javascript" src="../static/js/handlebars/handlebars-v4.5.3.js"></script>
<script type="text/javascript" src="../static/js/common.js"></script>
<script>
  console.log('%c 中扬立库平台 %c 1.0.0','background-color:rgb(53,73,94);color: #fff;border-radius:2px 0 0 2px;padding:2px 4px;','background-color:rgb(25,190,107);color: #fff;border-radius:0 2px 2px 0;padding:2px 4px;font: 9pt "Apercu Regular", Georgia, "Times New Roman", Times, serif;');
  console.log('%c 徐工汉云 %c 1.0.0','background-color:rgb(53,73,94);color: #fff;border-radius:2px 0 0 2px;padding:2px 4px;','background-color:rgb(25,190,107);color: #fff;border-radius:0 2px 2px 0;padding:2px 4px;font: 9pt "Apercu Regular", Georgia, "Times New Roman", Times, serif;');
  $(function () {
    if ("" === localStorage.getItem('token')) {
      top.location.href = baseUrl + "/login";
src/main/webapp/views/login.html
@@ -3,7 +3,7 @@
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>中扬 │ login of zoneyung wms</title>
    <title>徐工汉云 │ login of zoneyung wms</title>
    <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1">
    <meta name="description" content="study of Instancing with three.js">
    <meta name="keywords" content="undefined, Yoichi Kobayashi, WebGL, three.js">