自动化立体仓库 - WMS系统
#
whycq
2024-10-30 45dd167e12e11af8dc7929ff1475623c80fc3578
src/main/java/com/zy/asrs/controller/OrderController.java
@@ -56,6 +56,8 @@
    private MatService matService;
    @Autowired
    private AgvLocDetlService agvLocDetlService;
    @Autowired
    private FlowLogService flowLogService;
    @GetMapping("/doc/type/list")
    @Transactional
@@ -359,6 +361,7 @@
    @Transactional
    public R formAdd(@RequestBody OrderDomainParam param){
        Order order = orderService.selectByNo(param.getOrderNo());
        long flowId = snowflakeIdWorker.nextId();
        if (order != null) {
            return R.error("单据编号已存在");
        }
@@ -417,10 +420,30 @@
            DetlDto dto = new DetlDto(orderDetl.getMatnr(), orderDetl.getBatch());
            if (DetlDto.has(list, dto)) {
                OrderDetl item = orderDetlService.selectItem(order.getId(), orderDetl.getMatnr(), orderDetl.getBatch(),orderDetl.getThreeCode(),orderDetl.getDeadTime());
                Double anfme = item.getAnfme();
                item.setAnfme(item.getAnfme() + orderDetl.getAnfme());
                if (!orderDetlService.updateById(item)) {
                    throw new CoolException("保存订单明细档失败");
                }
                // 流水 -- 新增订单明细
//                FlowLog flowLog = new FlowLog();
//                flowLog.setFid(String.valueOf(flowId));
//                flowLog.setOpType(2L);
//                flowLog.setOrderNo(param.getOrderNo());
//                flowLog.setThreeCode(orderDetl.getThreeCode());
//                flowLog.setMatnr(orderDetl.getMatnr());
//                flowLog.setMaktx(orderDetl.getMaktx());
//                flowLog.setOrderPrevious(anfme);
//                flowLog.setOrderCurrent(anfme + orderDetl.getAnfme());
//                flowLog.setOrderChanged(orderDetl.getAnfme());
//                flowLog.setQtyPrevious(orderDetl.getQty());
//                flowLog.setQtyCurrent(orderDetl.getQty());
//                flowLog.setQtyChanged(0.0D);
//                flowLog.setUserId(getUserId());
//                flowLog.setAppeTime(now);
//                if (!flowLogService.insert(flowLog)) {
//                    throw new CoolException("同步半成品调拨单流水记录失败");
//                }
            } else {
                list.add(dto);
                orderDetl.setOrderId(order.getId());
@@ -435,6 +458,25 @@
                if (!orderDetlService.insert(orderDetl)) {
                    throw new CoolException("保存订单明细档失败");
                }
//                // 流水 -- 新增订单明细
//                FlowLog flowLog = new FlowLog();
//                flowLog.setFid(String.valueOf(flowId));
//                flowLog.setOpType(1L);
//                flowLog.setOrderNo(param.getOrderNo());
//                flowLog.setThreeCode(orderDetl.getThreeCode());
//                flowLog.setMatnr(orderDetl.getMatnr());
//                flowLog.setMaktx(orderDetl.getMaktx());
//                flowLog.setOrderPrevious(0.0D);
//                flowLog.setOrderCurrent(orderDetl.getAnfme());
//                flowLog.setOrderChanged(orderDetl.getAnfme());
//                flowLog.setQtyPrevious(0.0D);
//                flowLog.setQtyCurrent(0.0D);
//                flowLog.setQtyChanged(0.0D);
//                flowLog.setUserId(getUserId());
//                flowLog.setAppeTime(now);
//                if (!flowLogService.insert(flowLog)) {
//                    throw new CoolException("同步半成品调拨单流水记录失败");
//                }
            }
        }
        if (param.getDocType().intValue() == 32) {
@@ -570,11 +612,33 @@
                        if (!orderDetlService.insert(orderDetl)) {
                            throw new CoolException("生成半成品调拨单明细档失败");
                        }
//                        // 流水 -- 新增订单明细
//                        FlowLog flowLog = new FlowLog();
//                        flowLog.setFid(String.valueOf(flowId));
//                        flowLog.setOpType(1L);
//                        flowLog.setOrderNo(param.getOrderNo());
//                        flowLog.setThreeCode(orderDetl.getThreeCode());
//                        flowLog.setMatnr(orderDetl.getMatnr());
//                        flowLog.setMaktx(orderDetl.getMaktx());
//                        flowLog.setOrderPrevious(0.0D);
//                        flowLog.setOrderCurrent(orderDetl.getAnfme());
//                        flowLog.setOrderChanged(orderDetl.getAnfme());
//                        flowLog.setQtyPrevious(0.0D);
//                        flowLog.setQtyCurrent(0.0D);
//                        flowLog.setQtyChanged(0.0D);
//                        flowLog.setUserId(getUserId());
//                        flowLog.setAppeTime(now);
//                        if (!flowLogService.insert(flowLog)) {
//                            throw new CoolException("同步半成品调拨单流水记录失败");
//                        }
                    }
                }
            }
        }
        return R.ok("订单添加成功");
    }
@@ -583,6 +647,8 @@
    @Transactional
    public R formModify(@RequestBody OrderDomainParam param){
        Order order = orderService.selectById(param.getOrderId());
        long flowId = snowflakeIdWorker.nextId();
        int docType = param.getDocType().intValue();
        if (order == null || order.getStatus() == 0) {
            return R.error("订单不存在");
        }
@@ -606,18 +672,48 @@
        // 2.重组数据
        List<DetlDto> list = new ArrayList<>();
        for (OrderDetl orderDetl : param.getOrderDetlList()) {
            DetlDto dto = new DetlDto(orderDetl.getMatnr(), orderDetl.getBatch());
            DetlDto dto = new DetlDto(orderDetl.getMatnr(), orderDetl.getAnfme(), orderDetl.getProcessSts());
            if (DetlDto.has(list, dto)) {
                OrderDetl item = orderDetlService.selectItem(order.getId(), orderDetl.getMatnr(), orderDetl.getBatch(),orderDetl.getThreeCode(),orderDetl.getDeadTime());
                Double anfme = item.getAnfme();
                item.setAnfme(item.getAnfme() + orderDetl.getAnfme());
                if (!orderDetlService.updateById(item)) {
                    throw new CoolException("保存订单明细档失败");
                }
//                // 流水 -- 新增订单明细
//                FlowLog flowLog = new FlowLog();
//                flowLog.setFid(String.valueOf(flowId));
//                flowLog.setOpType(2L);
//                flowLog.setOrderNo(param.getOrderNo());
//                flowLog.setThreeCode(orderDetl.getThreeCode());
//                flowLog.setMatnr(orderDetl.getMatnr());
//                flowLog.setMaktx(orderDetl.getMaktx());
//                flowLog.setOrderPrevious(anfme);
//                flowLog.setOrderCurrent(anfme + orderDetl.getAnfme());
//                flowLog.setOrderChanged(orderDetl.getAnfme());
//                flowLog.setQtyPrevious(orderDetl.getQty());
//                flowLog.setQtyCurrent(orderDetl.getQty());
//                flowLog.setQtyChanged(0.0D);
//                flowLog.setUserId(getUserId());
//                flowLog.setAppeTime(now);
//                if (!flowLogService.insert(flowLog)) {
//                    throw new CoolException("同步半成品调拨单流水记录失败");
//                }
            } else {
                if (docType == 35 && orderDetl.getProcessSts() == 1) {
                    List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>()
                            .eq("matnr", orderDetl.getMatnr())
                            .eq("order_no", orderDetl.getOrderNo())
                            .eq("process_sts", 3));
                    for (AgvLocDetl agvLocDetl : agvLocDetls) {
                        agvLocDetl.setProcessSts(1);
                        agvLocDetlService.updateById(agvLocDetl);
                    }
                }
                list.add(dto);
                orderDetl.setOrderId(order.getId());
                orderDetl.setOrderNo(order.getOrderNo());
                orderDetl.setSource(param.getDocType().intValue());
                orderDetl.setSource(docType);
                orderDetl.setCreateBy(getUserId());
                orderDetl.setCreateTime(now);
                orderDetl.setUpdateBy(getUserId());
@@ -627,6 +723,25 @@
                if (!orderDetlService.insert(orderDetl)) {
                    throw new CoolException("保存订单明细档失败");
                }
                // 流水 -- 新增订单明细
//                FlowLog flowLog = new FlowLog();
//                flowLog.setFid(String.valueOf(flowId));
//                flowLog.setOpType(2L);
//                flowLog.setOrderNo(param.getOrderNo());
//                flowLog.setThreeCode(orderDetl.getThreeCode());
//                flowLog.setMatnr(orderDetl.getMatnr());
//                flowLog.setMaktx(orderDetl.getMaktx());
//                flowLog.setOrderPrevious(0.0D);
//                flowLog.setOrderCurrent(orderDetl.getAnfme());
//                flowLog.setOrderChanged(orderDetl.getAnfme());
//                flowLog.setQtyPrevious(orderDetl.getQty());
//                flowLog.setQtyCurrent(orderDetl.getQty());
//                flowLog.setQtyChanged(0.0D);
//                flowLog.setUserId(getUserId());
//                flowLog.setAppeTime(now);
//                if (!flowLogService.insert(flowLog)) {
//                    throw new CoolException("同步半成品调拨单流水记录失败");
//                }
            }
        }
        return R.ok("订单修改成功");
@@ -841,15 +956,15 @@
            Integer proSts = 0;
            Row row = sheet.getRow(i);
            //单据类型
            String docName =  dataFormatter.formatCellValue(row.getCell(0));
            String docName =  dataFormatter.formatCellValue(row.getCell(0)).trim();
            //单据编号
            String uuid = dataFormatter.formatCellValue(row.getCell(1));
            String uuid = dataFormatter.formatCellValue(row.getCell(1)).trim();
            //物料号
            String matnr = dataFormatter.formatCellValue(row.getCell(2));
            String matnr = dataFormatter.formatCellValue(row.getCell(2)).trim();
            //销售单号
            String csocode = dataFormatter.formatCellValue(row.getCell(3));
            String csocode = dataFormatter.formatCellValue(row.getCell(3)).trim();
            //自由项
            String isocode = dataFormatter.formatCellValue(row.getCell(4));
            String isocode = dataFormatter.formatCellValue(row.getCell(4)).trim();
            // 数量
            if(Cools.isEmpty(dataFormatter.formatCellValue(row.getCell(5)))){
                continue;
@@ -886,18 +1001,18 @@
                proSts = 3;
            }
            String odNo = uuid;
            if(docType.getPakin() == 1){
                uuid += "_I";
                odNo += "_I";
            }else {
                uuid += "_O";
                odNo += "_O";
            }
            Order order = orderService.selectByNo(uuid);
            Order order = orderService.selectByNo(odNo);
            if (null == order) {
                order = new Order(
                        String.valueOf(snowflakeIdWorker.nextId()),    // 编号[非空]
                        uuid,    // 订单编号
                        odNo,    // 订单编号
                        null,    // 单据日期
                        docType.getDocId(),    // 单据类型
                        null,    // 项目编号
@@ -935,6 +1050,11 @@
                    throw new CoolException("生成单据主档失败,请重新导入!");
                }
            }else {
                //  有原订单在的情况
                DocType orderType = docTypeService.selectById(order.getDocType());
                if (!orderType.getDocName().equals(docName)) {
                    throw new CoolException("新订单:" + uuid + " 与系统内的订单号相同,单据类型不同。请确认新订单单据类型!");
                }
                order.setSettle(order.getSettle() == 1L ? 1L : 2L );
                orderService.updateById(order);
            }
@@ -961,13 +1081,16 @@
                    throw new CoolException("生成单据明细失败,请重新导入!");
                }
            } else {
                if (anfme < 0)  {
                    throw new CoolException("订单数量不允许为负数!");
                }
                if(!orderDetlService.increaseAnfme(order.getId(), matnr, null, anfme,csocode,isocode)) {
                    throw new CoolException("生成单据明细失败,请重新导入!");
                }
            }
            // 生成调拨单
            if (docType.getDocId().intValue() == 32) {
                String dbUuid = "DB" + uuid;
                String dbUuid = "DB" + odNo;
                Order order2 = orderService.selectByNo(dbUuid);
                if (null == order2) {
                    order2 = new Order(
@@ -1045,7 +1168,7 @@
            // 工序为1:待加工 生成加工单
            if (proSts == 1) {
                if (docType.getDocId().intValue() == 32) {
                    String dbUuid = "JG" + uuid;
                    String dbUuid = "JG" + odNo;
                    Order order3 = orderService.selectByNo(dbUuid);
                    if (null == order3) {
                        order3 = new Order(