自动化立体仓库 - WMS系统
#
whycq
2024-05-05 0146de915c3bb74dcce2c39debcbdb8cf692623d
src/main/java/com/zy/asrs/controller/OrderController.java
@@ -98,6 +98,70 @@
        return R.ok(orderService.selectPage(new Page<>(curr, limit), wrapper));
    }
    //  所有入库订单
    @RequestMapping(value = "/order/detls/in/page/auth")
    @ManagerAuth
    public R orderIn(@RequestParam(defaultValue = "1")Integer curr,
                  @RequestParam(defaultValue = "10000")Integer limit,
                  @RequestParam(required = false)String orderByField,
                  @RequestParam(required = false)String orderByType,
                  @RequestParam Map<String, Object> param){
        EntityWrapper<Order> wrapper = new EntityWrapper<>();
        excludeTrash(param);
        convert(param, wrapper);
        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} else {
            wrapper.orderBy("settle").orderBy("create_time", false);
        }
        wrapper.eq("status", 1);
        List<DocType> pakins = docTypeService.selectList(new EntityWrapper<DocType>().eq("pakin", 1));
        List<Long> docIds = new ArrayList<>();
        for (DocType pakin : pakins) {
            docIds.add(pakin.getDocId());
        }
        wrapper.in("doc_type",docIds);
        return R.ok(orderService.selectPage(new Page<>(curr, limit), wrapper));
    }
    //  所有入库订单明细
    @RequestMapping(value = "/order/detls/pakin/page/auth")
    @ManagerAuth
    public R orderDetls(@RequestParam(defaultValue = "1")Integer curr,
                        @RequestParam(defaultValue = "100")Integer limit,
                        @RequestParam(required = false)String orderByField,
                        @RequestParam(required = false)String orderByType,
                        @RequestParam Map<String, Object> param){
        EntityWrapper<OrderDetl> wrapper = new EntityWrapper<>();
        excludeTrash(param);
        convert(param, wrapper);
//        return R.ok(orderDetlService.getPakoutPage(toPage(curr, limit, param, OrderDetl.class)));
        List<DocType> pakins = docTypeService.selectList(new EntityWrapper<DocType>().eq("pakin", 1));
        List<Long> docIds = new ArrayList<>();
        for (DocType pakin : pakins) {
            docIds.add(pakin.getDocId());
        }
        wrapper.in("source",docIds);
        return R.ok(orderDetlService.selectPage(new Page<>(curr, limit), wrapper));
//        EntityWrapper<OrderDetl> wrapper = new EntityWrapper<>();
//        excludeTrash(param);
//        convert(param, wrapper);
//        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} else {
//            wrapper.orderBy("create_time", false);
//        }
//        List<DocType> pakins = docTypeService.selectList(new EntityWrapper<DocType>().eq("pakin", 1));
//        List<Long> docIds = new ArrayList<>();
//        for (DocType pakin : pakins) {
//            docIds.add(pakin.getDocId());
//        }
//        EntityWrapper<Order> orderEntityWrapper = new EntityWrapper<>();
//        List<Order> orders = orderService.selectList(orderEntityWrapper.in("doc_type",docIds));
//        List<String> orderNos = new ArrayList<>();
//        for (Order order : orders) {
//            orderNos.add(order.getOrderNo());
//        }
//        wrapper.in("order_no",orderNos);
//        return R.ok(orderDetlService.selectPage(new Page<>(curr, limit), wrapper));
    }
    @RequestMapping(value = "/order/detl/all/auth")
    @ManagerAuth
    public R head(@RequestParam Long orderId){
@@ -156,7 +220,7 @@
        for (OrderDetl orderDetl : param.getOrderDetlList()) {
            DetlDto dto = new DetlDto(orderDetl.getMatnr(), orderDetl.getBatch());
            if (DetlDto.has(list, dto)) {
                OrderDetl item = orderDetlService.selectItem(order.getId(), orderDetl.getMatnr(), orderDetl.getBatch());
                OrderDetl item = orderDetlService.selectItem(order.getId(), orderDetl.getMatnr(), orderDetl.getBatch(),orderDetl.getThreeCode(),orderDetl.getDeadTime());
                item.setAnfme(item.getAnfme() + orderDetl.getAnfme());
                if (!orderDetlService.updateById(item)) {
                    throw new CoolException("保存订单明细档失败");
@@ -209,7 +273,7 @@
        for (OrderDetl orderDetl : param.getOrderDetlList()) {
            DetlDto dto = new DetlDto(orderDetl.getMatnr(), orderDetl.getBatch());
            if (DetlDto.has(list, dto)) {
                OrderDetl item = orderDetlService.selectItem(order.getId(), orderDetl.getMatnr(), orderDetl.getBatch());
                OrderDetl item = orderDetlService.selectItem(order.getId(), orderDetl.getMatnr(), orderDetl.getBatch(),orderDetl.getThreeCode(),orderDetl.getDeadTime());
                item.setAnfme(item.getAnfme() + orderDetl.getAnfme());
                if (!orderDetlService.updateById(item)) {
                    throw new CoolException("保存订单明细档失败");
@@ -356,14 +420,14 @@
    @Transactional
    public R delete(@RequestParam Long orderId){
        orderService.remove(orderId);
//        Order order = orderService.selectById(orderId);
//        if (order != null) {
//            order.setStatus(0);
//        }
//        if (!orderService.updateById(order)) {
//            throw new CoolException("删除订单失败");
//        }
//        orderDetlService.modifyStatus(orderId, 0);
        return R.ok();
    }
    @RequestMapping(value = "/order/report/auth")
    @ManagerAuth(memo = "手动上传订单")
    @Transactional
    public R report(@RequestParam Long orderId){
        orderService.report(orderId,getUser().getUsername());
        return R.ok();
    }
@@ -439,30 +503,34 @@
        DataFormatter dataFormatter = new DataFormatter();
        for (int i = 1; i < totalRows; i++) {
            Row row = sheet.getRow(i);
            // 订单编号
            String uuid = dataFormatter.formatCellValue(row.getCell(0));
            // 商品名称
            String maktx = dataFormatter.formatCellValue(row.getCell(1));
            // 商品编码
            //单据类型
            String docName =  dataFormatter.formatCellValue(row.getCell(0));
            //单据编号
            String uuid = dataFormatter.formatCellValue(row.getCell(1));
            //物料号
            String matnr = dataFormatter.formatCellValue(row.getCell(2));
            //销售单号
            String csocode = dataFormatter.formatCellValue(row.getCell(3));
            //自由项
            String isocode = dataFormatter.formatCellValue(row.getCell(4));
            // 数量
            Double anfme = Double.parseDouble(dataFormatter.formatCellValue(row.getCell(3)));
            // 下单时间
            String timeStr = dataFormatter.formatCellValue(row.getCell(4));
            Date time = null;
            try {
                time = DateUtils.convert(timeStr, DateUtils.yyyyMMddHHmmss_F);
            } catch (Exception e) {
                throw new CoolException("第" + i + "行下的那时间解析失败,请重新导入!");
            if(Cools.isEmpty(dataFormatter.formatCellValue(row.getCell(5)))){
                continue;
            }
            // 商品系列
            String tagName = dataFormatter.formatCellValue(row.getCell(5));
            // 规格
            String specs = dataFormatter.formatCellValue(row.getCell(6));
            Double anfme = Double.parseDouble(dataFormatter.formatCellValue(row.getCell(5)));
            Mat mat = matService.selectByMatnr(matnr);
            if (null == mat) {
                throw new CoolException(matnr + "商品编码的商品不存在,请重新导入!");
            }
            //String timeStr = DateUtils.convert(new Date());
            DocType docType = docTypeService.selectOne(new EntityWrapper<DocType>().eq("doc_name", docName));
            if(docType.getPakin() == 1){
                uuid += "_I";
            }else {
                uuid += "_O";
            }
            Order order = orderService.selectByNo(uuid);
@@ -470,8 +538,8 @@
                order = new Order(
                        String.valueOf(snowflakeIdWorker.nextId()),    // 编号[非空]
                        uuid,    // 订单编号
                        timeStr,    // 单据日期
                        14L,    // 单据类型
                        null,    // 单据日期
                        docType.getDocId(),    // 单据类型
                        null,    // 项目编号
                        null,    //
                        null,    // 调拨项目编号
@@ -506,12 +574,16 @@
                if (!orderService.insert(order)) {
                    throw new CoolException("生成单据主档失败,请重新导入!");
                }
            }else {
                order.setSettle(order.getSettle() == 1L ? 1L : 2L );
                orderService.updateById(order);
            }
            OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), matnr, null);
            OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), matnr, null,csocode,isocode);
            if (orderDetl == null) {
                orderDetl = new OrderDetl();
                orderDetl.sync(mat);
                orderDetl.setSource(docType.getDocId().intValue());
                orderDetl.setBatch(null);
                orderDetl.setAnfme(anfme);
                orderDetl.setOrderId(order.getId());
@@ -520,13 +592,15 @@
                orderDetl.setCreateTime(now);
                orderDetl.setUpdateBy(userId);
                orderDetl.setUpdateTime(now);
                orderDetl.setThreeCode(csocode);
                orderDetl.setDeadTime(isocode);
                orderDetl.setStatus(1);
                orderDetl.setQty(0.0D);
                if (!orderDetlService.insert(orderDetl)) {
                    throw new CoolException("生成单据明细失败,请重新导入!");
                }
            } else {
                if(!orderDetlService.increaseAnfme(order.getId(), matnr, null, anfme)) {
                if(!orderDetlService.increaseAnfme(order.getId(), matnr, null, anfme,csocode,isocode)) {
                    throw new CoolException("生成单据明细失败,请重新导入!");
                }
            }
@@ -534,4 +608,51 @@
        return R.ok("导入成功");
    }
    /**
     * excel导入
     */
    @PostMapping(value = "/order/excel/import2/auth")
    @ManagerAuth(memo = "销售单Excel导入")
    @Transactional
    public R cstmrExcelImport2(MultipartFile file) throws IOException {
        InputStream inStream = file.getInputStream();
        String fileMime = file.getContentType();
        int excelVersion = 2007;
        if ("application/vnd.ms-excel".equals(fileMime)) {
            excelVersion = 2003;
        }
        Workbook book = null;
        try {
            if (excelVersion == 2003) {
                book = new HSSFWorkbook(inStream);
            }
            else {  // 当 excel 是 2007 时
                book = new XSSFWorkbook(inStream);
            }
        } catch (Exception e) {
            log.error("fail", e);
            return R.error("导入文件格式错误,请使用xls后缀的文件!");
        }
        Sheet sheet = book.getSheetAt(0);
        int totalRows = sheet.getLastRowNum() + 1;    // 总
        DataFormatter dataFormatter = new DataFormatter();
        List<String> strs = new ArrayList<>();
        for (int i = 1; i < totalRows; i++) {
            Row row = sheet.getRow(i);
            //单据类型
            String docName =  dataFormatter.formatCellValue(row.getCell(0));
            //单据编号
            String uuid = dataFormatter.formatCellValue(row.getCell(1));
            //物料号
            String matnr = dataFormatter.formatCellValue(row.getCell(2));
            Mat mat = matService.selectByMatnr(matnr);
            if (null == mat) {
                strs.add(matnr);
//                throw new CoolException(matnr + "商品编码的商品不存在,请检查!");
            }
        }
        return R.ok("导入成功").add(strs);
    }
}