廖井涛
2025-08-25 fec9f42e00f2df68a2a20cbf132b17bdeed8e63a
north-glass-erp/src/main/java/com/example/erp/service/mm/FinishedGoodsInventoryService.java
@@ -799,6 +799,8 @@
            alias="LC";
        }else if(Objects.equals(type, "返工")){
            alias="FG";
        }else if(Objects.equals(type, "调架")){
            alias="TJ";
        }
        //查询当天的最大数量
        Integer maximum=finishedOperateLogMapper.getmaximum(type);
@@ -860,7 +862,10 @@
                }
                Map<String, Object> itemmap = new HashMap<>();
                itemmap.put("detail", finishedOperateLogMapper.getPrimaryListLimts(finishedOperateLog.getOrder().getCustomerName(),finishedOperateLog.getOrder().getProject(),finishedOperateLog.getRemarks()));
                itemmap.put("detail", finishedOperateLogMapper.getPrimaryListLimts(
                        finishedOperateLog.getOrder().getCustomerId(),
                        finishedOperateLog.getOrder().getProject(),
                        finishedOperateLog.getRemarks()));
                List<Map<String, Object>> detailList = finishedOperateLogMapper.getDetailList2(finishedOperateLog.getOrderId(),finishedOperateLog.getProcessId(),finishedOperateLog.getRemarks());
@@ -994,7 +999,7 @@
                if(delivery!=null){
                    return "false1";
                }
                if(!Objects.equals(existFinishedGoodsInventory.getQuantityAvailable(), finishedOperateLog.getQuantity())){
                if(existFinishedGoodsInventory.getQuantityAvailable()<finishedOperateLog.getQuantity()){
                    return "false2";
                }
@@ -1064,7 +1069,7 @@
        return "true";
    }
    public Map<String,Object> changeRack(FinishedGoodsInventory finishedGoodsInventory) {
    public Map<String,Object> changeRack(FinishedGoodsInventory finishedGoodsInventory, String user) {
        Long id = finishedGoodsInventory.getId();
        Map<String,Object> map = new HashMap<>();
        FinishedGoodsInventory oldFinishedGoodsInventory = finishedGoodsInventoryMapper.selectById(finishedGoodsInventory.getId());
@@ -1077,6 +1082,14 @@
                        .eq(FinishedGoodsInventory::getBoxNo, finishedGoodsInventory.getBoxNo())
                        .last("limit 1")
                );
        String operationOrderNumber = orderNumberSetting("调架");
        FinishedOperateLog finishedOperateLog = new FinishedOperateLog();
        finishedOperateLog.setOperationOrderNumber(operationOrderNumber);
        finishedOperateLog.setOrderId(oldFinishedGoodsInventory.getOrderId());
        finishedOperateLog.setOperationNumber(oldFinishedGoodsInventory.getOrderNumber());
        finishedOperateLog.setProcessId(oldFinishedGoodsInventory.getProcessId());
        finishedOperateLog.setOperateType("调架");
        finishedOperateLog.setOperator(user);
        //当成品箱号不存在,则新增
        if(existFinishedGoodsInventory==null){
            //当转移数量大于实际库存箱号时,则不能转移
@@ -1100,6 +1113,13 @@
                                    .eq(FinishedGoodsInventory::getId,id)
                    ) ;
            finishedGoodsInventoryMapper.insert(finishedGoodsInventory);
            //往操作日志表添加数据
            finishedOperateLog.setQuantity(finishedGoodsInventory.getQuantityAvailable());
            finishedOperateLog.setRemarks(oldFinishedGoodsInventory.getBoxNo()+"->"+finishedGoodsInventory.getBoxNo());
            finishedOperateLogMapper.insert(finishedOperateLog);
            map.put("code",1);
            return map;//库存转移成功,新增箱号
@@ -1133,6 +1153,11 @@
                                        .eq(FinishedGoodsInventory::getId,existFinishedGoodsInventory.getId())
                        ) ;
                //往操作日志表添加数据
                finishedOperateLog.setQuantity(finishedGoodsInventory.getQuantityAvailable());
                finishedOperateLog.setRemarks(oldFinishedGoodsInventory.getBoxNo()+"->"+existFinishedGoodsInventory.getBoxNo());
                finishedOperateLogMapper.insert(finishedOperateLog);
                map.put("code",3);
                List<String> list = new ArrayList<>();
                list.add(oldFinishedGoodsInventory.getBoxNo());
@@ -1142,4 +1167,61 @@
            }
        }
    }
    public Map<String, Object> getInventoryPrints(List<FinishedGoodsInventory> finishedGoodsInventories) {
        Map<String, Object> map = new HashMap<>();
        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();//最终结果
        if (!finishedGoodsInventories.isEmpty()) {
            Set<String> processedProcessIds = new HashSet<>();
            for (FinishedGoodsInventory finishedGoodsInventory : finishedGoodsInventories) {
                String orderId = finishedGoodsInventory.getOrderId();
                String boxNo = finishedGoodsInventory.getBoxNo();
                // 检查是否已经处理过该 OrderId,如果处理过则跳过
                if (processedProcessIds.contains(orderId) && processedProcessIds.contains(boxNo)) {
                    continue;
                }
                Map<String, Object> itemmap = new HashMap<>();
                List<Map<String, String>> detail = finishedGoodsInventoryMapper.getPrintTitleByBox(
                        finishedGoodsInventory.getOrder().getCustomerId(),
                        finishedGoodsInventory.getOrder().getProject(),
                        boxNo,
                        orderId
                );
                itemmap.put("detail",detail);
                //获取库存里面此订单此箱号的所有产品信息
                List<Map<String, Object>> detailList = finishedGoodsInventoryMapper
                        .getorderProductByBoxNo(orderId,boxNo);
                List<Map<String, Object>> detailsmaplist = new ArrayList<Map<String, Object>>();
                for(Map<String, Object> details:detailList){
                    Map<String, Object> detailsmap = new HashMap<>();
                    detailsmap.put("product_name",details.get("product_name").toString());
                    //获取明细数据
                    List<Map<String, Object>> orderDetailList = finishedGoodsInventoryMapper
                            .getPrintDetail(
                                    orderId,
                                    boxNo,
                                    Integer.valueOf(details.get("product_id").toString()),
                                    details.get("thickness").toString()
                            );
                    detailsmap.put("detailList",orderDetailList);
                    detailsmaplist.add(detailsmap);
                }
                itemmap.put("detailList", detailsmaplist);
                list.add(itemmap);
                processedProcessIds.add(orderId);
                processedProcessIds.add(boxNo);
            }
        }
        map.put("data", list);
        return map;
    }
}