自动化立体仓库 - WMS系统
1
zhang
3 天以前 25c7cdf3ea9c4e63f16bbb52ce40e28bc65dc87c
1
7个文件已修改
259 ■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/OpenController.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/OutController.java 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/OpenService.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java 150 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/license.lic 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/OpenController.java
@@ -493,7 +493,7 @@
     * 退库单(出库)
     */
    @PostMapping("/returnOrder/auth/v1")
    @AppAuth(memo = "退库单单据下发")
    @AppAuth(memo = "正常退库单单据下发")
    public synchronized R returnOrder(@RequestHeader(required = false) String appkey,
                                            @RequestBody ReturnOrderConfirmParam param,
                                            HttpServletRequest request) {
@@ -502,6 +502,19 @@
        return R.ok(param);
    }
    /**
     * 退库单(出库)
     */
    @PostMapping("/unqualifiedOrder/auth/v1")
    @AppAuth(memo = "不合格品退库单单据下发")
    public synchronized R unqualifiedOrder(@RequestHeader(required = false) String appkey,
                                      @RequestBody ReturnOrderConfirmParam param,
                                      HttpServletRequest request) {
        auth(appkey, param, request);
        openService.unqualifiedOrder(param);
        return R.ok(param);
    }
    /*...........................上饶江铜..............以上.............徐工汉云...........................*/
}
src/main/java/com/zy/asrs/controller/OutController.java
@@ -56,12 +56,14 @@
        Thread.sleep(200);
        return R.ok().add(orderDetlService.selectByOrderId(orderId).stream().map(OrderDetl::getId).distinct().collect(Collectors.toList()));
    }
    @PostMapping("/getMesOrder/auth")
    @ManagerAuth
    public R getMesOrder() {
        List<String> orderNoList = orderService.getOrderNosByDocType(25L);
        return R.ok().add(orderNoList);
    }
    @PostMapping("/out/pakout/preview/auth")
    @ManagerAuth
    public R pakoutPreview(@RequestBody List<Long> ids) {
@@ -105,11 +107,14 @@
            // 获取出库口
            List<Integer> staNos = new ArrayList<>();
            if (order.getDocType() == 21) {
                staNos.add(3077); staNos.add(3106);
                staNos.add(3077);
                staNos.add(3106);
            } else if (order.getDocType() == 22) {
                staNos.add(2041);
            } else if (order.getDocType() == 23) {
                staNos.add(3092); staNos.add(3102); staNos.add(3095);
                staNos.add(3092);
                staNos.add(3102);
                staNos.add(3095);
            }
            // 去重 key,避免相同 loc+unit+model 重复显示
@@ -236,8 +241,14 @@
                    // 判断是否为盘点单(docType == 23),如果不是则校验合格性
                    Order order = orderService.selectByNo(stockOutParam.getOrderNo());
                    if ( order.getDocType() != 23) {
                        if (order.getDocType() == 26 || order.getDocType() == 27) {
                            if ("合格".equals(one.getThreeCode())) {
                                throw new CoolException(one.getModel() + "卷是合格: " + one.getThreeCode());
                            }
                        } else {
                        if (!"合格".equals(one.getThreeCode())) {
                            throw new CoolException(one.getModel() + "卷不合格: " + one.getThreeCode());
                            }
                        }
                    }
@@ -251,9 +262,15 @@
                        .eq("loc_no", locDetlDtos.get(0).getLocDetl().getLocNo()));
                if ("F".equals(locMast.getLocSts()) || "D".equals(locMast.getLocSts())) {
                    Order order = orderService.selectByNo(stockOutParam.getOrderNo());
                    IoWorkType ioWorkType = (order.getDocType() != null && order.getDocType() == 23)
                            ? IoWorkType.CHECK_OUT : null;
                    if (order.getDocType() != null) {
                        if (order.getDocType() == 26 || order.getDocType() == 27) {
                            ioWorkType = IoWorkType.ALL_OUT;
                        }
                    }
                    workService.stockOut(staNo, locDetlDtos,
                            order.getDocType() != null && order.getDocType() == 23
                                    ? IoWorkType.CHECK_OUT : null,
                            ioWorkType,
                            getUserId(),optionValue);
                } else {
                    throw new CoolException("所选库位状态不为F/D,库位号:" +
@@ -267,7 +284,6 @@
        return R.ok();
    }
    @PostMapping("/out/refund/loc/auth")
src/main/java/com/zy/asrs/service/OpenService.java
@@ -11,6 +11,7 @@
    /**
     * GWMS请求ZWMS生成入库任务
     *
     * @return 目标信息
     */
    R gwmsGenerateInventory(GwmsGenerateInventoryDto param);
@@ -132,6 +133,7 @@
    /**
     * 同步商品信息
     *
     * @param param
     */
    void syncMat(MatSyncParam param);
@@ -143,6 +145,7 @@
    void balconyComplete(LabellerMatParam param);
    void PalletizingCompleteTwoFloorParam(PalletizingCompleteTwoFloorParam param);
    void palletizingCompleteS(PalletizingCompleteParam param);
    void singleUnstackingComplete(SingleUnstackingCompleteParam param);
@@ -158,5 +161,5 @@
    R returnOrder(ReturnOrderConfirmParam param);
    R unqualifiedOrder(ReturnOrderConfirmParam param);
}
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -2346,7 +2346,7 @@
    @Transactional
    public R returnOrder(ReturnOrderConfirmParam param) {
        if (Cools.isEmpty(param.getOrderNumber())) {
            param.setOrderNumber("THCK" + snowflakeIdWorker.nextId() + "");
            param.setOrderNumber("THCK" + DateUtils.convert(new Date(), DateUtils.yyyyMMdd));
        }
        // 1. 查询单据是否存在
        Order order = orderMapper.selectOrderByOrderNo(param.getOrderNumber());
@@ -2364,13 +2364,64 @@
            orderMapper.insert(order);
        } else {
            // 1.2 存在,更新单据状态
            order.setStatus(1);
            order.setStatus(2);
            orderMapper.updateById(order);
        }
        orderDetlMapper.delete(
                new EntityWrapper<OrderDetl>().eq("order_no", param.getOrderNumber())
        // 2. 一一对应遍历
        List<ReturnOrderConfirmParam.VolumeNumber> volList = param.getVolumeNumbers();
        for (int i = 0; i < volList.size(); i++) {
            ReturnOrderConfirmParam.VolumeNumber vn = volList.get(i);
            // 查询是否已存在该 detl
            OrderDetl detl = orderDetlMapper.selectByOrderNoAndPkgGroupNoAndVolumeNo(
                    param.getOrderNumber(), param.getPackageGroupNo(), vn.getVolumeNumber()
        );
            if (detl == null) {
                detl = new OrderDetl();
                detl.setOrderId(order.getId());
                detl.setOrderNo(param.getOrderNumber());
                detl.setCreateTime(new Date());
                detl.setAnfme(1.0);
                detl.setBrand(param.getPackageGroupNo());   // 包装组号
                detl.setModel(vn.getVolumeNumber());     // 卷号
                orderDetlMapper.insert(detl);
            }
        }
        return R.ok("组货确认成功");
    }
    @Override
    @Transactional
    public R unqualifiedOrder(ReturnOrderConfirmParam param) {
        if (Cools.isEmpty(param.getOrderNumber())) {
            param.setOrderNumber("UQCK" + DateUtils.convert(new Date(), DateUtils.yyyyMMdd));
        }
        // 1. 查询单据是否存在
        Order order = orderMapper.selectOrderByOrderNo(param.getOrderNumber());
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        if (order == null) {
            // 1.1 不存在,新建单据
            order = new Order();
            order.setOrderNo(param.getOrderNumber());
            order.setStatus(1);
            order.setOrderTime(sdf.format(new Date()));
            order.setCreateTime(new Date());
            order.setSettle(1L);
            order.setDocType(27L);
            orderMapper.insert(order);
        } else {
            // 1.2 存在,更新单据状态
            order.setStatus(2);
            orderMapper.updateById(order);
        }
        // 2. 一一对应遍历
        List<ReturnOrderConfirmParam.VolumeNumber> volList = param.getVolumeNumbers();
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -48,12 +48,30 @@
    static {
        crnMapNo = new HashMap<>();
        crnMapNo.put(1,new ArrayList<Integer>(){{add(3001);add(3002);}});
        crnMapNo.put(2,new ArrayList<Integer>(){{add(3004);add(3003);}});
        crnMapNo.put(3,new ArrayList<Integer>(){{add(3005);add(3006);}});
        crnMapNo.put(4,new ArrayList<Integer>(){{add(3007);add(3008);}});
        crnMapNo.put(5,new ArrayList<Integer>(){{add(3010);add(3009);}});
        crnMapNo.put(6,new ArrayList<Integer>(){{add(3011);add(3012);}});
        crnMapNo.put(1, new ArrayList<Integer>() {{
            add(3001);
            add(3002);
        }});
        crnMapNo.put(2, new ArrayList<Integer>() {{
            add(3004);
            add(3003);
        }});
        crnMapNo.put(3, new ArrayList<Integer>() {{
            add(3005);
            add(3006);
        }});
        crnMapNo.put(4, new ArrayList<Integer>() {{
            add(3007);
            add(3008);
        }});
        crnMapNo.put(5, new ArrayList<Integer>() {{
            add(3010);
            add(3009);
        }});
        crnMapNo.put(6, new ArrayList<Integer>() {{
            add(3011);
            add(3012);
        }});
    }
    @Autowired
@@ -213,6 +231,7 @@
            throw new CoolException("库存不存在");
        }
    }
    @Override
    @Transactional
    public void startupFullTakeStoreOrder(StockOutParam param, Long userId) {
@@ -313,6 +332,7 @@
        }
    }
    @Transactional
    @Override
    public void stockOut(BasDevp staNo, List<LocDetlDto> locDetlDtos, IoWorkType ioWorkType, Long userId) {
@@ -388,7 +408,9 @@
            }
            // 生成工作档明细
            for (LocDetlDto detlDto : dto.getLocDetlDtos()) {
                if (detlDto.getCount()==null || detlDto.getCount() <= 0.0D) {continue;}
                if (detlDto.getCount() == null || detlDto.getCount() <= 0.0D) {
                    continue;
                }
                WrkDetl wrkDetl = new WrkDetl();
                List<OrderDetl> orderDetl = orderDetlService.selectByBrand(detlDto.getLocDetl().getBrand());
                wrkDetl.sync(detlDto.getLocDetl());
@@ -463,6 +485,8 @@
                ioType = dto.isAll() ? 101 : 103;
            } else if (ioWorkType.equals(IoWorkType.CHECK_OUT)) {
                ioType = 107;
            } else if (ioWorkType.equals(IoWorkType.ALL_OUT)) {
                ioType = 101;
            }
            assert ioType != null;
            // 获取库位
@@ -509,7 +533,9 @@
            }
            // 生成工作档明细
            for (LocDetlDto detlDto : dto.getLocDetlDtos()) {
                if (detlDto.getCount()==null || detlDto.getCount() <= 0.0D) {continue;}
                if (detlDto.getCount() == null || detlDto.getCount() <= 0.0D) {
                    continue;
                }
                WrkDetl wrkDetl = new WrkDetl();
                List<OrderDetl> orderDetl = orderDetlService.selectByBrand(detlDto.getLocDetl().getBrand());
                wrkDetl.sync(detlDto.getLocDetl());
@@ -574,34 +600,82 @@
        int souresStaNo = 0;
        if (taskDto.getStaNo() < 3000) { // 二楼
            switch (row) {
                case 1: case 2: case 3:
                case 4: souresStaNo = 2062; break;
                case 5: case 6: case 7:
                case 8: souresStaNo = 2065; break;
                case 9: case 10: case 11:
                case 12: souresStaNo = 2068; break;
                case 13: case 14: case 15:
                case 16: souresStaNo = 2070; break;
                case 17: case 18: case 19:
                case 20: souresStaNo = 2073; break;
                case 21: case 22: case 23:
                case 24: souresStaNo = 2076; break;
                case 1:
                case 2:
                case 3:
                case 4:
                    souresStaNo = 2062;
                    break;
                case 5:
                case 6:
                case 7:
                case 8:
                    souresStaNo = 2065;
                    break;
                case 9:
                case 10:
                case 11:
                case 12:
                    souresStaNo = 2068;
                    break;
                case 13:
                case 14:
                case 15:
                case 16:
                    souresStaNo = 2070;
                    break;
                case 17:
                case 18:
                case 19:
                case 20:
                    souresStaNo = 2073;
                    break;
                case 21:
                case 22:
                case 23:
                case 24:
                    souresStaNo = 2076;
                    break;
                default:
            }
        } else { // 一楼
            switch (row) {
                case 1: case 2: case 3:
                case 4: souresStaNo = 3002; break;
                case 5: case 6: case 7:
                case 8: souresStaNo = 3003; break;
                case 9: case 10: case 11:
                case 12: souresStaNo = 3006; break;
                case 13: case 14: case 15:
                case 16: souresStaNo = 3008; break;
                case 17: case 18: case 19:
                case 20: souresStaNo = 3009; break;
                case 21: case 22: case 23:
                case 24: souresStaNo = 3012; break;
                case 1:
                case 2:
                case 3:
                case 4:
                    souresStaNo = 3002;
                    break;
                case 5:
                case 6:
                case 7:
                case 8:
                    souresStaNo = 3003;
                    break;
                case 9:
                case 10:
                case 11:
                case 12:
                    souresStaNo = 3006;
                    break;
                case 13:
                case 14:
                case 15:
                case 16:
                    souresStaNo = 3008;
                    break;
                case 17:
                case 18:
                case 19:
                case 20:
                    souresStaNo = 3009;
                    break;
                case 21:
                case 22:
                case 23:
                case 24:
                    souresStaNo = 3012;
                    break;
                default:
            }
        }
@@ -638,7 +712,9 @@
        }
        // 生成工作档明细
        for (LocDto locDto : taskDto.getLocDtos()) {
            if (locDto.getAnfme()==null || locDto.getAnfme() <= 0.0D) { continue; }
            if (locDto.getAnfme() == null || locDto.getAnfme() <= 0.0D) {
                continue;
            }
            OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch());
            if (orderDetl == null) {
                orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null);
@@ -1121,7 +1197,9 @@
            Iterator<LocDetlAdjustParam.LocDetlAdjust> iterator1 = list.iterator();
            while (iterator1.hasNext()) {
                LocDetlAdjustParam.LocDetlAdjust adjust = iterator1.next();
                if (adjust.getCount() == 0) { continue; }
                if (adjust.getCount() == 0) {
                    continue;
                }
                if (locDetl.getMatnr().equals(adjust.getMatnr()) && Cools.eq(locDetl.getBatch(), adjust.getBatch())) {
                    if (!locDetl.getAnfme().equals(adjust.getCount())) {
                        // todo 盘点记录
@@ -1170,7 +1248,9 @@
        // 添加库存
        for (LocDetlAdjustParam.LocDetlAdjust adjust : list) {
            if (adjust.getCount() == 0.0D) { continue; }
            if (adjust.getCount() == 0.0D) {
                continue;
            }
            Mat mat = matService.selectByMatnr(adjust.getMatnr());
            LocDetl locDetl = new LocDetl();
            locDetl.sync(mat);
src/main/resources/application.yml
@@ -10,8 +10,8 @@
    enabled: false
  datasource:
    driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
    #url: jdbc:sqlserver://127.0.0.1:1433;databasename=ghjtasrs
    url: jdbc:sqlserver://192.168.14.137:1433;databasename=ghjtasrs
    url: jdbc:sqlserver://127.0.0.1:1433;databasename=ghjtasrs
    #url: jdbc:sqlserver://192.168.14.137:1433;databasename=ghjtasrs
    username: sa
    password: sa@123
  mvc:
src/main/resources/license.lic
Binary files differ